Django模型-特定于企业的链接类型,每个企业仅一种链接类型?

时间:2020-07-20 12:36:53

标签: django django-models

如何修改以下模型,以便每个企业仅允许每种类型的一个社交媒体链接:

class Business(models.Model):
    business = models.CharField(max_length=60)

class SocialLinkType(models.Model):
    FB = 'FB'
    TWTR = 'TWTR'
    PIN = 'PIN'
    INST = 'INST'
    MEMBERSHIP_CHOICES = (
        (FB, 'Facebook'),
        (TWTR, 'Twitter'),
        (PIN, 'Pinterest'),
        (INST, 'Instagram'),
    )
    business = models.ManyToManyField(Business) 

class SocialLink(models.Model):
    link_url = models.TextField()
    link_type = models.ForeignKey(SocialLinkType, on_delete=models.CASCADE)
    business = models.ForeignKey(Business, on_delete=models.CASCADE)

1 个答案:

答案 0 :(得分:1)

在sociallinktype模型中,添加Facebook,Twitter,...等名称。

class SocialLinkType(models.Model):
    name = models.CharField(max_length=20)

在sociallink模型中,添加unique_together以确保每个公司只有一个facebook链接...。

class SocialLink(models.Model):
    link_url = models.TextField()
    business = models.ForeignKey(Business, on_delete=models.CASCADE)
    link_type = models.ForeignKey(SocialLinkType, on_delete=models.CASCADE)

    class Meta:
        unique_together = ['business', 'link_type']