如何修改以下模型,以便每个企业仅允许每种类型的一个社交媒体链接:
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)
答案 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']