gpt4 book ai didi

python - 向 Django 管理添加自定义字段

转载 作者:太空宇宙 更新时间:2023-11-03 17:51:13 25 4
gpt4 key购买 nike

我已经用各个字段定义了我的模型。其中一些是自定义字段,我使用应用程序的 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 ,这似乎是解决方案,但它不起作用。我已经尝试了各种方法,包括添加一个带有缺失字段的字段元组以使其正常工作,但没有成功。是的,我已经做了很多搜索。

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

为交易指定的未知字段(卡号)。检查 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 是表单字段,而不是模型字段。在您发布的同一链接中查看其用法。

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

关于python - 向 Django 管理添加自定义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com