所以我有一个用户模型和一个社区模型。现在,为了检查用户是否加入了社区,我有一个UserJoinedCommunity模型。它有user和community字段。如下所示:
class UserJoinedCommunity(models.Model):
"""DB Model for users joined communities"""
user = models.ForeignKey(User, on_delete=models.CASCADE)
community = models.ForeignKey(Community, on_delete=models.CASCADE)
def __str__(self):
return f"{self.user.username}|{self.community.name}"所以我想要做的是使整个行是唯一的,这样用户就不能“多次加入社区”。因此,如果用户id是3,并且他加入了id为5的社区,那么它将创建一个记录例如{user: 3, community: 5}。我希望它是唯一的,这样它就不会被再次创建。
发布于 2019-10-09 00:59:11
你要找的是unique_together。
class UserJoinedCommunity(models.Model):
"""DB Model for users joined communities"""
user = models.ForeignKey(User, on_delete=models.CASCADE)
community = models.ForeignKey(Community, on_delete=models.CASCADE)
class Meta:
unique_together = ['user', 'community']
def __str__(self):
return f"{self.user.username}|{self.community.name}"请注意,这将在数据库中创建一个约束。这不是应用程序级别的约束。换句话说,您仍然需要自己处理IntegrityError。
https://stackoverflow.com/questions/58290510
复制相似问题