Django管理界面中的独占或外键

Exclusive Or ForeignKey in Django admin interface

在Django中是否有办法强制管理员用户选择填写少数几个外国人中的一个而不是一个?

我有一个类似的模型:

1
2
3
4
5
6
7
class 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)
    ...

我希望管理员用户选择一个Foreignkeys项目,类别或人。
或者我应该以不同方式组织模型?


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


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

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

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