python - 在 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
我试过什么
- 我也这样做了
ManyToManyField('friends
)`,但它对我不起作用。
我不知道该怎么办。
任何帮助将不胜感激。
先感谢您
解决方案
除非你在你的Profile
模型中定义了 related_name,否则OneToOneField
User
Django 将使用小写的模型名来访问相关对象。所以,user.profile
。
或者您也可以使用以下方法获取相关friends
对象:Video.user
_set
video = Video.objects.get(pk=pk)
video.user.profile.friends
# or
video.user.profile_set
请注意,您可以从以下位置删除unique
(Django Docs)选项OneToOneField
:
此选项对除ManyToManyField和 OneToOneField之外的所有字段类型均有效。
并将朋友添加到 add_users:
video.add_users.add(*video.user.profile.friends)
请注意,
add()
、create()
、remove()
、clear()
和set()
all 立即对所有类型的相关字段应用数据库更改。换句话说,不需要在关系的任何一端调用 save() 。
推荐阅读
- java - Spring boot 2.2.0 - 多部分文件上传失败并出现错误
- c# - 错误 CS0234:命名空间“System.Data”VSTS (DevOps) 中不存在类型或命名空间名称“实体”
- python - pandas timedelta 和过滤负值
- angular - Angular 延迟加载模块中的嵌套子级
- c# - 如何在 ASP.NET Razor 页面中的 DropDown 更改上重新加载/调用 OnGet 或 OnPost 方法
- node.js - 如何在 API 调用下生成套接字发出事件
- python - 绘制 Vasicek 模型。只有大小 -1 的数组可以转换为 python 标量
- python - 如何生成0到1之间的相关随机数?
- tensorflow - Tensorflow 对象检测 API 不工作,即使损失很低
- hash - 反转 CRC32 / 从 CRC32 中删除字节