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