abh*_*rni 12 django django-models
让我们说我有社交网络帖子,用户和喜欢的模型:
class Post(models.Model):
submitter = models.ForeignKey(User, null=False, default=None)
content = models.CharField()
date = models.DateField()
with_likes = PostLikeCountManager()
objects = models.Manager()
class Like(models.Model):
user = models.ForeignKey(User)
post = models.ForeignKey(Post)
time = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
将Post模型视为代表Facebook帖子会很有帮助.现在,我想限制每个用户每个帖子一个.我如何实现这一目标?一种方法是在类的(user,post)属性上创建复合主键Like.我不知道如何在Django中实现这一目标.另一种是同时使用unique=True两个属性.那可能吗?
谢谢.
knb*_*nbk 18
是的,使用unique_together:
class Like(models.Model):
user = models.ForeignKey(User)
post = models.ForeignKey(Post)
time = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = ('user', 'post')
Run Code Online (Sandbox Code Playgroud)
Han*_*Han 10
unique_together将在未来版本中弃用,您可以申请UniqueConstraint. 这个和这个链接 给出了示例代码。
class Like(models.Model):
user = models.ForeignKey(User)
post = models.ForeignKey(Post)
time = models.DateTimeField(auto_now_add=True)
class Meta:
constraints = [
models.UniqueConstraint(fields=['user', 'post'], name='unique_user_post'),
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4157 次 |
| 最近记录: |