Django 管理员自定义验证 - 至少需要一个内联外键模型

Posted

技术标签:

【中文标题】Django 管理员自定义验证 - 至少需要一个内联外键模型【英文标题】:Django admin custom validation - require at least one inline foreign-key model 【发布时间】:2011-08-16 14:46:52 【问题描述】:

我有两个通过库存管理界面管理的 Django 模型(Purchaser 和 LineItem)。简化版:

class Purchaser(models.Model):
    firstname = models.CharField('First Name', max_length = 30)
    lastname = models.CharField('Last Name', max_length = 30)
    paymentid = models.IntegerField('Payment ID', unique = True)

class LineItem(models.Model):
    purchaser = models.ForeignKey(Purchaser)
    ship_first_name = models.CharField('Recipient First Name', max_length = 50)
    ship_last_name = models.CharField('Recipient Last Name', max_length = 50)

我在 Purchaser 管理页面中将 LineItems 作为内联项,并希望要求 Purchaser 至少有一个 LineItem(即,除非用户添加了至少一个 LineItem,否则不要让用户保存新的 Purchaser)。有没有一种干净的方法可以做到这一点?我已经使用自定义modelForm 设置了一些验证,但该方法仅处理购买者字段,与 LineItems 无关。建议?

【问题讨论】:

【参考方案1】:

您可以使用此处引用的答案信息:Django: Forcing admin users to enter at least one item in TabularInline

希望对你有所帮助。

【讨论】:

以上是关于Django 管理员自定义验证 - 至少需要一个内联外键模型的主要内容,如果未能解决你的问题,请参考以下文章

在自定义管理页面中显示正确的 django 身份验证框架信息

Django admin 中的自定义验证

Django 管理员无法使用自定义用户模型正确登录

带有来自模型的自定义验证消息的 Django 1.5 基于类的视图

Django 自定义用户模型和超级用户

Django 管理员定制