Django将前键限制为一个选择

时间:2019-08-13 09:57:12

标签: django django-models

需要以某种方式将模型ForeignKey限制为可用选项之一。 这是我的模特:

class CustomCompany(models.Model):
name = models.CharField(max_length=30,
        default=None,
        unique=True
        )
teams = ListCharField(
    base_field=models.CharField(max_length=15),
    size=15,
    max_length=(15*16),
    default=["Owners"],
    unique=True
)


class CustomUser(AbstractUser):
company = models.ForeignKey(CustomCompany,
        on_delete=models.CASCADE,
        default='None',
        to_field='name',
        related_name='company'
        )
team = models.ForeignKey(CustomCompany,
        on_delete=models.CASCADE,
        default='Owners',
        to_field='teams',
        related_name='team',
        )

因此,我遇到了“团队”模型的问题。 使团队模型分配具有所有选择,但是我只想从可用选项中选择一个。 有人遇到这个问题吗?是否可以将此ForeignKey限制为仅一个选择?谢谢

1 个答案:

答案 0 :(得分:0)

AFAIK,您不能在数据库级别限制它。外键定义为从一个数据库表的一行到另一数据库表的一行的关系。较高级别代码的责任是确保创建这种关系是明智的。

您可以在Django表单中限制用户可用的选择。您对queryset使用ModelChoiceField参数。 See this answer.