【发布时间】:2021-06-10 12:12:01
【问题描述】:
我有一个 Django 3.0 模型和相关的管理员添加表单。我想验证输入的数据与同时输入的其他数据,就像普通表单一样——例如,确保两个密码字段匹配,或者确保电子邮件和备用电子邮件字段不同。
似乎最好的方法是为添加页面的表单扩展clean() 函数,因为这是您用于普通表单的函数。该文档似乎暗示这可能是可能的,但它没有提供足够的信息来将它们放在一起。 Web 搜索“Django 扩展管理表单”返回结果仅用于扩展模板。
如何扩展 Django Admin Add Form 的 clean() 函数?
编辑:为了具体起见,这里有一个模型和模型管理员的例子,答案应该适用于:
# models.py
class Questions(models.Model):
question = models.CharField(
help_text='Text of question'
)
class Choices(models.Model):
q = models.ForeignKey(
Questions,
on_delete=models.CASCADE
)
choice = models.CharField(
help_text='Text of choice'
)
# admin.py
class ChoicesInQuestions(admin.TabularInline):
model = Choices
extra = 4
max_num = 4
@admin.register(Questions)
class QuestionAdmin(admin.ModelAdmin):
inlines = [ChoicesInQuestions]
问题添加页面上有四个选项。我想在提交时同时对它们进行相互验证,就像我可以使用其 clean() 函数对任何常规表单进行操作一样。
【问题讨论】:
标签: django django-admin