此片段来自djangoproject.com教程。有人能解释为什么这条线是用这种方式写的:
inlines =[ChoiceInline]
而不是
inlines = ChoiceInline
为什么在类ChoiceInline周围有方括号?
from django.contrib import admin
from naslovnica.models import Poll
from naslovnica.models import Choice
class ChoiceInline(admin.TabularInline):
model = Choice
extra = 3
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines =[ChoiceInline]
list_display = ('question', 'pub_date', 'was_published_recently')
search_fields = ['question']
list_filter = ['pub_date']
admin.site.register(Poll, PollAdmin)
答案 0 :(得分:4)
这不是“课堂电话”。这只是一个清单。你可以有多个内联,因此是复数,你需要将它们放在列表或元组中。
答案 1 :(得分:1)
inlines =[ChoiceInline]
这不是课堂的召唤。这将创建新列表,其中class
为第一个元素。
课程调用将以ChoiceInline()
完成。
答案 2 :(得分:1)
内联是InlineModelAdmin,TabularInline或StackedInline的列表。 这允许您为相关模型添加“内联”表单。
https://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects
管理界面能够在与父模型相同的页面上编辑模型。这些被称为内联。
答案 3 :(得分:1)
它接收一个列表或一个Classes元组,因为Django将它用作特殊的ModelAdmin
类,就像BaseModelAdmin
的扩展名一样。
在内部,Django会对这些类进行实例化,如下所示:
def get_inline_instances(self, request, obj=None):
inline_instances = []
for inline_class in self.inlines:
inline = inline_class(self.model, self.admin_site)
if request:
if not (inline.has_add_permission(request) or
inline.has_change_permission(request, obj) or
inline.has_delete_permission(request, obj)):
continue
if not inline.has_add_permission(request):
inline.max_num = 0
inline_instances.append(inline)
return inline_instances
为了更好地理解,我建议您在django.contrib.admin
中查看选项文件:https://github.com/django/django/blob/master/django/contrib/admin/options.py