Recording classes in Django Admin with @admin.register decorator

bgarcial picture bgarcial · Jul 6, 2015 · Viewed 7k times · Source

I am testing the new @admin.register decorator that is a new feature from Django 1.7. I am currently using Django 1.8.2 and Python 3 and happened me the following situation in relation to @admin.register decorator:

In my admin.py file I have:

from django.contrib import admin
from .models import Track

# Register your models here.
@admin.register(Track)
class TrackAdmin(admin.ModelAdmin):
    list_display = ('title','artist')

And when I try http://localhost:8000/admin/ I get the following output in my browser:

AttributeError

Now, When I use the admin.site.register(Track,TrackAdmin)that is the traditional way of register models and classes in the django admin, happened me the same

from django.contrib import admin
from .models import Track


# Register your models here.

class TrackAdmin(admin.ModelAdmin):
    list_display = ('title','artist')

admin.site.register(Track,TrackAdmin)

How to can I use the @admin.register decorator for record together classes? (Track and TrackAdmin)

Thanks a lot. :)

Answer

Alberto Millan picture Alberto Millan · Jul 8, 2015

Please see following reference: https://docs.djangoproject.com/en/1.8/ref/contrib/admin/

Place your decorator @admin.register(Track) before your class as "sugar" or wrapper for it.

from django.contrib import admin
from .models import Track

# Register your models here

@admin.register(Track)
class TrackAdmin(admin.ModelAdmin):
    list_display = ('title','artist')