问题是我有一个名为 Gift 的模型。它有一个布尔字段“giftbought”,我想在创建对象时隐藏在管理界面中,并在更新对象时显示它。
我尝试制作一个表单,覆盖init方法,例如:
class GiftForm(forms.ModelForm):
giftbought = forms.BooleanField(label=u"Bought?", required=False)
class Meta:
model = Gift
def __init__(self, *args, **kwargs):
super(GiftForm, self).__init__(*args, **kwargs)
if not self.instance.pk:
del self.fields['giftbought']
但它不适用于管理员,就像它在中所说的那样: 从 ModelForm 中删除字段
我需要创建一个 ModelAdmin 类,覆盖 get_form 方法,但我不知道如何检查我是否为 is_instance...
它会是这样的:
class GiftAdmin(admin.ModelAdmin):
model = Gift
def get_form(self, request, obj=None, **kwargs):
# that IF doesnt work!!!
if not self.instance.pk:
self.exclude = ('giftbought',)
return super(GiftAdmin, self).get_form(request, obj=None, **kwargs)
admin.site.register(Gift, GiftAdmin)
有什么提示吗?