我已经用各种领域定义了我的模型。 其中一些是自定义字段,我用来验证信用卡数据,使用我的应用程序的fields.py文件。来源是here。
class Transaction(models.Model):
card_name = models.CharField()
card_number = CreditCardField(required=True)
security_code = VerificationValueField(required=True)
expiry_date = ExpiryDateField(required=True)
我在forms.py文件中定义了一个ModelForm。
class TransactionForm(forms.ModelForm):
class Meta:
model = Transaction
fields = "__all__"
我已将表单添加到我的admin.py文件中。
class TransactionAdmin(admin.ModelAdmin):
form = TransactionForm
def get_fieldsets(self, *args, **kwargs):
return (
(None, {
'fields': ('card_name', 'card_number'),
}),
)
admin.site.register(Transaction, TransactionAdmin)
但是,自定义字段似乎不会显示在管理面板中。经过大量的研究,我找到了this,这似乎是解决方案,除了它不起作用。我尝试了各种各样的事情,包括添加一个带有缺失字段的字段元组以使其工作,但没有骰子。是的,我已经做了大量的搜索。
在最后一个链接中遵循解决方案时得到的错误是:
Unknown field(s) (card_number) specified for Transaction. Check fields/fieldsets/exclude attributes of class TransactionAdmin.
运行Django 1.7.4,Python 3。
答案 0 :(得分:1)
像这样更改你的模特/管理员/表格
class Transaction(models.Model):
card_name = models.CharField()
card_number = models.CharField(max_length=40)
expire_date = models.DateTimeField()
card_code = models.CharField(max_length=10)
class TransactionForm(forms.ModelForm):
card_number = CreditCardField(required=True)
expiry_date = ExpiryDateField(required=True)
card_code = VerificationValueField(required=True)
class Meta:
model = Transaction
fields = "__all__"
class TransactionAdmin(admin.ModelAdmin):
form = TransactionForm
admin.site.register(Transaction, TransactionAdmin)
<强>更新强>
CreditCardField
是表单字段,而不是模型字段。在您发布的链接中查看其用法。
这些字段将以表格形式出现。