NameError at /admin/ name 'HoleImage' is not defined

128 views
Skip to first unread message

Patrick C

unread,
Jun 11, 2014, 4:18:53 PM6/11/14
to django...@googlegroups.com
Hi All,

New to Django / Python (coming from PHP).

Trying to make a site for a golf course where there is a hole by hole guide, each hole has a number, name, description then multiple images for the gallery.

I've spend the last few hours googling how I'm going wrong here because I get the error in the subject line.

My models.py is:

from django.db import models

class Hole(models.Model):
    hole_number = models.IntegerField()
    hole_name = models.CharField(max_length=255)
    hole_description = models.CharField(max_length=500)

    def __str__(self):
    return self.hole_number

class HoleImage(models.Model):
    hole = models.ForeignKey(Hole, related_name='images')
    image = models.ImageField(upload_to='hole_photos')
    caption = models.CharField(max_length=250)


and my admin.py is:

from django.contrib import admin
from holes.models import Hole

class HoleImageInline(admin.TabularInline):
    model = HoleImage

class HoleAdmin(admin.ModelAdmin):
    fields = ['hole_number', 'hole_name', 'hole_description']
    list_display = ['hole_number', 'hole_name', 'hole_description']
    inlines = [ HoleImageInline, ]

admin.site.register(Hole)


Full admin panel error is:

NameError at /admin/

name 'HoleImage' is not defined
Request Method:GET
Request URL:http://127.0.0.1:8000/admin/
Django Version:1.6.5
Exception Type:NameError
Exception Value:
name 'HoleImage' is not defined
Exception Location:/Users/my_laptop/development/golfsmart/holes/admin.py in HoleImageInline, line 5
Python Executable:/usr/bin/python
Python Version:2.7.5


As I say, I'm new to this and have had a good trial and error stab, I'm sure it's something simple I am overlooking and once I have it resolved I will have a lesson learned as I have a few other apps to setup that will use this many type for images.

Thanks in advance.


Ilya Kazakevich

unread,
Jun 11, 2014, 4:26:30 PM6/11/14
to django...@googlegroups.com
To use any symbol (including " HoleImage" class) you need to import it first.
You've imported Hole (from holes.models import Hole), but you forgot to import HoleImage.
So, you got " name 'HoleImage' is not defined " error.

It is better to use IDE, because it helps you in such cases :)




Ilya Kazakevich,
JetBrains PyCharm (Best Python/Django IDE)
http://www.jetbrains.com/pycharm/
"Develop with pleasure!"
>--
>You received this message because you are subscribed to the Google Groups
>"Django users" group.
>To unsubscribe from this group and stop receiving emails from it, send an email
>to django-users...@googlegroups.com.
>To post to this group, send email to django...@googlegroups.com.
>Visit this group at http://groups.google.com/group/django-users.
>To view this discussion on the web visit
>https://groups.google.com/d/msgid/django-users/7079f896-e765-428f-a95a-6f9
>53ad105f8%40googlegroups.com
><https://groups.google.com/d/msgid/django-users/7079f896-e765-428f-a95a-6f
>953ad105f8%40googlegroups.com?utm_medium=email&utm_source=footer> .
>For more options, visit https://groups.google.com/d/optout.


Jorge Andrés Vergara Ebratt

unread,
Jun 11, 2014, 4:26:45 PM6/11/14
to django...@googlegroups.com

You need to import HoleImage in admin.py

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.

Patrick C

unread,
Jun 11, 2014, 4:32:18 PM6/11/14
to django...@googlegroups.com, ilya.ka...@jetbrains.com
Hi Ilya,

Thanks for the swift reply, sorry for the noob question but can you elaborate on "but you forgot to import HoleImage" - I'm not quite following, I'm sure I will understand it once explained.

I'm only about 4 hours into my first workings with Python / Django, perhaps I'm jumping in a little too quick but so far I have read through a fair bit and live the prose. 

Jorge Andrés Vergara Ebratt

unread,
Jun 11, 2014, 4:36:11 PM6/11/14
to django...@googlegroups.com

In admin.py you have

from hotels.models import Hole

Add HoleImage to that import

On Jun 11, 2014 3:19 PM, "Patrick C" <patrick....@gmail.com> wrote:
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.

Patrick C

unread,
Jun 11, 2014, 4:41:14 PM6/11/14
to django...@googlegroups.com
Hi Jorge,

Thanks for helping out - I understand that and have just tried it but still get the error:

NameError at /admin/

name 'Hole' is not defined
Request Method:GET
Request URL:http://127.0.0.1:8000/admin/
Django Version:1.6.5
Exception Type:NameError
Exception Value:
name 'Hole' is not defined
Exception Location:/Users/my_laptop/development/golfsmart/holes/admin.py in <module>, line 12
Python Executable:/usr/bin/python
Python Version:2.7.5


So just to clarify my structure incase I'm missing something on pluralisation:

holes
- admin.py
- model.py


models.py:

from django.db import models

class Hole(models.Model):
    hole_number = models.IntegerField()
    hole_name = models.CharField(max_length=255)
    hole_description = models.CharField(max_length=500)

    def __str__(self):
    return self.hole_number

class HoleImage(models.Model):
    hole = models.ForeignKey(Hole, related_name='images')
    image = models.ImageField(upload_to='hole_photos')
    caption = models.CharField(max_length=250)

admin.py:

from django.contrib import admin
from holes.models import HoleImage

class HoleImageInline(admin.TabularInline):
    model = HoleImage

class HoleAdmin(admin.ModelAdmin):
    fields = ['hole_number', 'hole_name', 'hole_description']
    list_display = ['hole_number', 'hole_name', 'hole_description']
    inlines = [ HoleImageInline, ]

admin.site.register(Hole)

Ilya Kazakevich

unread,
Jun 11, 2014, 4:44:18 PM6/11/14
to django...@googlegroups.com
Hello,

I believe you should start with Python tutorial: https://docs.python.org/2/tutorial/
After you complete it, you may go to Django tutorial.

It is generally a good idea to study basic language concepts, syntax and standard library before studying any framework (you've learned PHP _before_ zend/phpcacke/joomla or wordpress, right?:) )
> >to django-users...@googlegroups.com <javascript:> .
> >To post to this group, send email to django...@googlegroups.com
><javascript:> .
><http://groups.google.com/group/django-users> .
> >To view this discussion on the web visit
> >https://groups.google.com/d/msgid/django-users/7079f896-e765-428f-a9
>5a-6f9
><https://groups.google.com/d/msgid/django-users/7079f896-e765-428f-a95a-6f
>9>
> >53ad105f8%40googlegroups.com
> ><https://groups.google.com/d/msgid/django-users/7079f896-e765-428f-a
>95a-6f
><https://groups.google.com/d/msgid/django-users/7079f896-e765-428f-a95a-6f
>>
> >953ad105f8%40googlegroups.com?utm_medium=email&utm_source=foot
>er <http://40googlegroups.com?utm_medium=email&utm_source=footer> > .
> >For more options, visit https://groups.google.com/d/optout
><https://groups.google.com/d/optout> .
>
>
>
>
>--
>You received this message because you are subscribed to the Google Groups
>"Django users" group.
>To unsubscribe from this group and stop receiving emails from it, send an email
>to django-users...@googlegroups.com.
>To post to this group, send email to django...@googlegroups.com.
>Visit this group at http://groups.google.com/group/django-users.
>To view this discussion on the web visit
>https://groups.google.com/d/msgid/django-users/c7b136ef-2763-4b8c-929a-f3d
>17751cd0e%40googlegroups.com
><https://groups.google.com/d/msgid/django-users/c7b136ef-2763-4b8c-929a-f3
>d17751cd0e%40googlegroups.com?utm_medium=email&utm_source=footer> .

Jorge Andrés Vergara Ebratt

unread,
Jun 11, 2014, 4:44:25 PM6/11/14
to django...@googlegroups.com

Oh and in the last line, admin.site.register, use the model you want to register in the Admin

Jorge Andrés Vergara Ebratt

unread,
Jun 11, 2014, 4:45:10 PM6/11/14
to django...@googlegroups.com

When you import HoleImage don't remove Hole :)

Patrick C

unread,
Jun 11, 2014, 4:52:00 PM6/11/14
to django...@googlegroups.com
Should it be this:

from django.contrib import admin
from holes.models import HoleImage

class HoleImageInline(admin.TabularInline):
    model = HoleImage

class HoleAdmin(admin.ModelAdmin):
    fields = ['hole_number', 'hole_name', 'hole_description']
    list_display = ['hole_number', 'hole_name', 'hole_description']
    inlines = [ HoleImageInline, ]

admin.site.register(Hole)
admin.site.register(HoleImage)



or this:

from django.contrib import admin
from holes.models import HoleImage

class HoleImageInline(admin.TabularInline):
    model = HoleImage

class HoleAdmin(admin.ModelAdmin):
    fields = ['hole_number', 'hole_name', 'hole_description']
    list_display = ['hole_number', 'hole_name', 'hole_description']
    inlines = [ HoleImageInline, ]

admin.site.register(Hole, HoleImages)


Still have errors trying either, sorry again for noob questions. 

Patrick C

unread,
Jun 11, 2014, 4:53:29 PM6/11/14
to django...@googlegroups.com, ilya.ka...@jetbrains.com
Thanks Ilya,

I will go through that this evening - I tend to learn through hardship, banging my head off the wall, walking away and finding a moment of clarity, I'm quick to understand the logic and approach but I leant the language / syntax through repetition. 

Ilya Kazakevich

unread,
Jun 11, 2014, 4:57:19 PM6/11/14
to django...@googlegroups.com
Instead of
from holes.models import HoleImage
write
from holes.models import HoleImage, Hole

Please read https://docs.python.org/2/tutorial/modules.html




Ilya Kazakevich,
JetBrains PyCharm (Best Python/Django IDE)
http://www.jetbrains.com/pycharm/
"Develop with pleasure!"


>-----Original Message-----
>From: django...@googlegroups.com
>[mailto:django...@googlegroups.com] On Behalf Of Patrick C
> On Jun 11, 2014 3:41 PM, "Patrick C" <patrick....@gmail.com <javascript:> >
><http://groups.google.com/group/django-users> .
> To view this discussion on the web visit
> For more options, visit https://groups.google.com/d/optout
><https://groups.google.com/d/optout> .
>
>
>
>
> --
> You received this message because you are subscribed to the Google
>Groups "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send
>an email to django-users...@googlegroups.com <javascript:> .
> To post to this group, send email to django...@googlegroups.com
><javascript:> .
><http://groups.google.com/group/django-users> .
> To view this discussion on the web visit
>https://groups.google.com/d/msgid/django-users/fca37d2a-b54f-4cec-af32-df5a
>6d1bfbdf%40googlegroups.com
><https://groups.google.com/d/msgid/django-users/fca37d2a-b54f-4cec-af32-df5
>a6d1bfbdf%40googlegroups.com?utm_medium=email&utm_source=footer> .
> For more options, visit https://groups.google.com/d/optout
><https://groups.google.com/d/optout> .
>
>
>--
>You received this message because you are subscribed to the Google Groups
>"Django users" group.
>To unsubscribe from this group and stop receiving emails from it, send an email
>to django-users...@googlegroups.com.
>To post to this group, send email to django...@googlegroups.com.
>Visit this group at http://groups.google.com/group/django-users.
>To view this discussion on the web visit
>https://groups.google.com/d/msgid/django-users/848555d3-1004-43e4-a7c6-490
>07ef0af4c%40googlegroups.com
><https://groups.google.com/d/msgid/django-users/848555d3-1004-43e4-a7c6-49
>007ef0af4c%40googlegroups.com?utm_medium=email&utm_source=footer> .

Patrick C

unread,
Jun 11, 2014, 5:06:05 PM6/11/14
to django...@googlegroups.com, ilya.ka...@jetbrains.com
Understood, got that error cleared now.

Just a last question - should my HoleImages not present their upload options in the Hole part of the admin?

Reply all
Reply to author
Forward
0 new messages