Hi I am creating an model admin with dynamic inline's.
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
On display I somtimes see two inline rows instead of one and when I try to update it I get "ManagementForm data is missing or has been tampered with"
Figured out what I was doing wrong. looks like I forgot to initialize the inlinse variable. So everytime I clicked on an object it added the same inline model again, which caused errors when I tried to save it.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments