向 Django 管理添加自定义字段

2024-03-18

我已经用各个领域定义了我的模型。 其中一些是自定义字段,我使用应用程序的 fields.py 文件来验证信用卡数据。来源是here https://github.com/bryanchow/django-creditcard-fields.

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 https://www.silviogutierrez.com/blog/django-dynamic-admin-forms/,这似乎是解决方案,但它不起作用。我已经尝试了各种方法,包括添加一个带有缺失字段的字段元组以使其正常工作,但没有成功。是的,我已经做了很多搜索。

按照最后一个链接中的解决方案时出现的错误是这样的:

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)

UPDATE:

CreditCardField是表单字段,而不是模型字段。在您发布的同一链接中查看其用法。

这些字段将以表格形式出现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向 Django 管理添加自定义字段 的相关文章

随机推荐