【发布时间】:2016-05-27 07:13:28
【问题描述】:
您好,我正在使用动态内联创建模型管理员。
class InlineProfile(admin.TabularInline):
model = Profile
# max_num = 1
class InlineProfileOne(admin.TabularInline):
model = TableOne
# max_num = 1
class InlineProfileTwo(admin.TabularInline):
model = TableTwo
# max_num = 1
class UserDisplay(admin.ModelAdmin):
inlines = [InlineProfile]
def get_inline_instances(self, request, obj=None):
up=UserProfile.objects.get(pk=obj.id)
if (up.job_type.job_type==1):
self.inlines.append(InlineProfileOne)
elif (up.job_type.job_type==2):
self.inlines.append(InlineProfileTwo)
return obj and super(UserDisplay, self).get_inline_instances(request, obj) or []
# def get_formsets(self, request, obj):
# print obj
# for inline in self.get_inline_instances(request, obj):
# yield inline.get_formset(request, obj)
list_display = [f.name for f in LCUser._meta.fields]
field_set = list(list_display)
field_set.remove('id')
field_set.remove('api_key')
field_set.remove('api_secret')
readonly_fields=['last_login_ip','last_login_timestamp','created_at','updated_at']
fieldsets = (
(None, {
'fields': field_set,
}),
('Advanced options', {
'classes': ('collapse',),
'fields': ('api_key', 'api_secret'),
}),
)
search_fields=list_display
list_filter=['user_type','profile_complete']
list_editable=list(list_display)
list_editable.remove('id')
list_editable.remove('updated_at')
list_editable.remove('created_at')
list_editable.remove('last_login_timestamp')
list_editable.remove('last_login_ip')
class Meta:
model = LCUser
在显示时,我有时会看到两个内联行而不是一个,当我尝试更新它时,我得到“ManagementForm 数据丢失或已被篡改”
【问题讨论】:
-
您可能需要渲染 ManagementForm:docs.djangoproject.com/en/dev/topics/forms/formsets/…
-
请注意,如果您在管理表单中有内联,并且在加载内联之前进行了更改(连接缓慢),您将收到此错误。
标签: django django-admin