【问题标题】:Enforce at least one value in a many-to-many relation, in Django?在 Django 中,在多对多关系中强制执行至少一个值?
【发布时间】:2012-05-15 20:34:10
【问题描述】:

我在 Django(1.4) 模型中有一个多对多关系。

class UserProfile(models.Model):
    foos = models.ManyToManyField(Foo)

我想强制每个用户(配置文件)至少有一个 Foo。 Foos 可以有零个或多个 User(Profiles)。

我希望在模型和管理员级别执行此操作,但仅在管理员中执行就足够了。

如果我理解正确,Django 中的“很多”是零个或多个。

我想要一个 ManyToOneOrMore 关系。我该怎么做?

谢谢,

克里斯。

【问题讨论】:

    标签: django orm


    【解决方案1】:

    不幸的是,我认为这在模型级别是不可能的,因为 ManyToMany 数据与其他模型字段分开保存。您应该能够通过指定自定义表单并在表单上编写 clean() 方法在管理员级别强制执行它。

    【讨论】:

      【解决方案2】:

      您不能像@Greg 详细信息那样在模型级别强制执行此操作,但您可以通过简单地将字段设为必填来在表单上强制执行此操作。这不会阻止任何具有 shell 级别访问权限的人手动创建没有 foo 的 UserProfile,但它会强制任何人使用基于浏览器的表单创建方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-29
        • 1970-01-01
        • 2012-02-17
        • 1970-01-01
        • 1970-01-01
        • 2020-09-08
        • 1970-01-01
        相关资源
        最近更新 更多