首页 > 解决方案 > 在 ManyToManyField 中显示朋友

问题描述

我正在构建一个 BlogApp,我试图只访问ManyToManyField. 但它不适合我。

我想做什么

我正在尝试仅显示 中的朋友列表ManyToManyField

模型.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,default='',unique=True)
    full_name = models.CharField(max_length=100,default='')
    friends = models.ManyToManyField("Profile",blank=True)

class Video(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE,default='',null=True)
    add_users = models.ManyToManyField(Profile,related_name='taguser')

我想访问视频模型中的朋友ManyToManyField

我试过什么

我不知道该怎么办。

任何帮助将不胜感激。

先感谢您

标签: pythondjangomany-to-many

解决方案


除非你在你的Profile模型中定义了 related_name,否则OneToOneField UserDjango 将使用小写的模型名来访问相关对象。所以,user.profile

或者您也可以使用以下方法获取相关friends对象:Video.user_set

video = Video.objects.get(pk=pk)
video.user.profile.friends
# or 
video.user.profile_set

请注意,您可以从以下位置删除uniqueDjango Docs)选项OneToOneField

此选项对除ManyToManyFieldOneToOneField之外的所有字段类型均有效。


并将朋友添加到 add_users:

video.add_users.add(*video.user.profile.friends)

请注意,add()create()remove()clear()set()all 立即对所有类型的相关字段应用数据库更改。换句话说,不需要在关系的任何一端调用 save() 。


推荐阅读