将自定义字段添加到 Django 管理
Adding custom fields to Django admin
我已经用各种领域定义了我的模型。
其中一些是自定义字段,我使用我的应用程序的 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,这似乎是解决方案,但它不起作用。我已经尝试了各种各样的事情,包括添加一个带有缺失字段的字段元组来让它工作,但没有骰子。是的,我已经做了很多搜索。
我按照上一个link的解决方案得到的错误是:
Unknown field(s) (card_number) specified for Transaction. Check fields/fieldsets/exclude attributes of class TransactionAdmin.
运行 Django 1.7.4,Python 3.
像这样更改您的模型/管理/表单
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
是表单域,不是模型域。在您发布的 link 中查看它的用法。
这些字段将出现在表单中。
我已经用各种领域定义了我的模型。 其中一些是自定义字段,我使用我的应用程序的 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,这似乎是解决方案,但它不起作用。我已经尝试了各种各样的事情,包括添加一个带有缺失字段的字段元组来让它工作,但没有骰子。是的,我已经做了很多搜索。
我按照上一个link的解决方案得到的错误是:
Unknown field(s) (card_number) specified for Transaction. Check fields/fieldsets/exclude attributes of class TransactionAdmin.
运行 Django 1.7.4,Python 3.
像这样更改您的模型/管理/表单
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
是表单域,不是模型域。在您发布的 link 中查看它的用法。
这些字段将出现在表单中。