gpt4 book ai didi

Django friend 作为多对多字段 - 更好地在字段中存储用户或用户配置文件( self )?

转载 作者:行者123 更新时间:2023-12-04 15:36:28 25 4
gpt4 key购买 nike

我找到了两种实现 的方法对称友谊 Django 中的系统(你是我的 friend ,所以我也是你的 friend ):

正如文档中所建议的:

class UserProfile(models.Model):
friends = models.ManyToManyField(User, related_name='friends')

现在,我想通过一个 select_related-query 获得所有“友好”的用户和用户配置文件模型(这应该是反向联接查找):
profiles = UserProfile.objects.filter(user__in=request.user.get_profile().friends.all()).select_related()

我查询用户配置文件,因为这样,我可以使用 select_related() 并缓存所有相关对象。

另一方面,我可以定义我的模型,将friends 字段引用为“self”,如下所示:
class UserProfile(models.Model):
friends = models.ManyToManyField('self')

现在,我的 select_related friend 查找看起来像这样:
profiles = this_user.get_profile().friends.all().select_related()

我总是需要用户对象和它的相关配置文件:关于通过 select_related() 进行反向查找,第二种方法要简单得多,但实际上是相同的。但是,通过使用“self”作为字段引用,Django 为我处理了对称的友谊。因此,我不必手动在数据库中为每个友谊创建两个条目。 Django 为我做到了这一点。然而,对称选项仅适用于“自我”引用字段。

哪个是更好的解决方案?我找不到任何关于它的信息。任何想法表示赞赏 - 谢谢!

最佳答案

西蒙,

有时最好使用现有插件,而不是尝试重新发明轮子。

你有没有看过django-friends ?

关于Django friend 作为多对多字段 - 更好地在字段中存储用户或用户配置文件( self )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com