如何将models.py中新建的类添加到admin.py中(django)

1 投票
2 回答
2884 浏览
提问于 2025-04-18 00:49

请问有什么建议吗?

最开始我在 models.py 里有一个类 Customer():

这是我在 admin.py 里的代码样子

from django.contrib import admin
from booknowapp.models import Customer

# Register your models here.
admin.site.register(Customer)

现在我在模型里添加了两个新类,我该怎么在管理后台注册这两个新类,让它们在应用中显示出来呢?我不太确定该用什么语法。

2 个回答

0

如果你扩展一下你已经用过的语法,结果会是这样的:

from django.contrib import admin
# wrap the line if it's too long
from booknowapp.models import (
    Customer,
    SecondModel,
    ThirdModel
)

# Register your models here.
admin.site.register(Customer)
admin.site.register(SecondModel)
admin.site.register(ThirdModel)

不过,这样做只会给你默认的管理员模型列表视图——你可能还想进一步扩展它。

class CustomerAdmin(admin.ModelAdmin):
    """Specialised admin view for the Customer model."""
    # set the fields to display 
    list_display = ('name', 'address', 'registered')

# register your Customer model, using the CustomerAdmin view
admin.site.register(Customer, CustomerAdmin)

ModelAdmin有很多其他功能可以利用,比如搜索字段、过滤、定制字段和自定义操作(比如“激活客户”),你可以在这里了解更多 - http://www.djangobook.com/en/2.0/chapter06.html#custom-modeladmin-classes

1

如果你新增了两个模型类,分别叫做 ModelClass1ModelClass2,那么你可以在 admin.py 文件中像下面这样注册多个模型:

from django.contrib import admin
from booknowapp.models import Customer, ModelClass1, ModelClass2

myModels = [Customer, ModelClass1, ModelClass2]  # iterable list
admin.site.register(myModels)

或者

你也可以像注册 Customer 一样,重复使用 admin.site.register 来注册这两个新类。

撰写回答