Django 管理界面中的 Exclusive 或 ForeignKey

Posted

技术标签:

【中文标题】Django 管理界面中的 Exclusive 或 ForeignKey【英文标题】:Exclusive Or ForeignKey in Django admin interface 【发布时间】:2011-01-15 17:10:04 【问题描述】:

在 Django 中,有没有一种方法可以强制管理员用户选择填充几个 ForeignKey 中的一个,而不是超过一个?

我有一个类似的模型:

类 URL(models.Model):
    ...
    links = models.URLField(_('Google Links'),verify_exists=True,unique=True)
    project = models.ForeignKey(Project,blank=True,null=True)
    category = models.ForeignKey(Category,blank=True,null=True)
    person = models.ForeignKey(ExternalPerson,blank=True,null=True)
    ...

我希望管理员用户选择外键项目、类别或人员之一。 或者我应该以不同的方式组织模型?

【问题讨论】:

【参考方案1】:

我所做的是拥有一个指向基本模型的单个外键,所有其他模型(Google 链接、项目等)都从该模型继承。这似乎在保持关系的同时将外键限制为单一选择。

【讨论】:

【参考方案2】:

只是一些想法......

我不知道您以后想对这些对象做什么,但是您是否考虑为所有对象创建一个通用接口?它可以解决您的问题...

如果界面不适合你,也许你可以创建一个表单来检查是否只选择了一个外键。

【讨论】:

以上是关于Django 管理界面中的 Exclusive 或 ForeignKey的主要内容,如果未能解决你的问题,请参考以下文章

显示聚合的 Django 管理界面

Django ORM:未继承子级的字段和值。对象重复。 (使用Django管理界面)

Django管理界面中的只读模型?

django学习-管理界面视图

python学习笔记--Django入门四 管理站点

通过 Django 管理界面按钮/url 运行脚本