我正在尝试制作一个应用程序,用户可以登录他们的个人资料并将歌曲添加到他们最喜欢的列表中。我为此定义了 M2M 关系。
我的问题是如何说(歌曲、歌手)的组合是独特的?
我搜索了一下,发现通过unique_together也许可以。这是设置的正确方法吗?
模型.py:
from django.contrib.auth.models import User
class Singer(models.Model):
name = models.CharField(max_length=500, unique=True)
def __str__(self):
return self.name
class Song(models.Model):
id = models.AutoField(primary_key=False)
singer = models.ForeignKey(Singer, on_delete=models.CASCADE, related_name='song')
name = models.CharField(max_length=500)
Class Meta:
unique_together = (singer, id)
def __str__(self):
return self.name
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
songs = models.ManyToManyField(Song, related_name='profile')
def __str__(self):
return self.user.username
如果您认为关系不正确,请随时纠正我的 models.py。
Thanks,
我将使用默认主键(自动字段),并使用元类属性 unique_together
class Song(models.Model):
singer = models.ForeignKey(Singer, on_delete=models.CASCADE, related_name='song')
name = models.CharField(max_length=500)
class Meta:
unique_together = (("singer", "name"),)
它将充当“代理”主键列。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)