die*_*con 2 python django django-models
我正在为我的网站在个人资料上实现喜欢,但我不确定哪种是最佳实践,像这样的 ManyToManyField:
class MyUser(AbstractBaseUser):
    ...
    likes = models.ManyToManyField('self', symmetrical = False, null = True)
    ...
或者只是创建一个类 Like,像这样:
class Like(models.Model):
    liker = models.ForeignKey(MyUser, related_name='liker')
    liked = models.ForeignKey(MyUser, related_name='liked')
其中一个是比另一个更好的选择吗?如果是这样,为什么?
谢谢
应该首选第一个选项。如果你需要一些额外的字段来描述喜欢,你仍然可以through="Likes"在你的ManyToManyField和定义模型中使用Likes。
操作数据条目也有点像 Pythonic:
# returns an object collection
likes_for_me = MyUser.objects.filter(pk=1).likes
代替:
me = MyUser.objects.filter(pk=1)
likes_for_me = Like.objects.filter(liked=me)
| 归档时间: | 
 | 
| 查看次数: | 1472 次 | 
| 最近记录: |