我有一个Profile
类,它扩展了User
类,并且我希望允许每个profile
能够为其他用户个人资料添加书签。
我已经设置了以下内容:
class Profile(models.Model):
# some fields e.g. name, email
bookmarked_profiles = models.ManyToManyField("self")
现在,我有些困惑,例如,如何为给定的配置文件实例“标记”新的配置文件?
例如像
# add new bookmark for profile instance
p = Profile.objects.get(pk=1)
profiles_to_bookmark = Profile.objects.all()
p.bookmarked_profiles = profiles_to_bookmark
我还想知道带有书签的个人资料的数量,例如
p.bookmarked_profiles.count()
答案 0 :(得分:1)
签入Django文档,那里有您需要的一切
for profile in profiles_to_bookmark:
p.bookmarked_profiles.add(profile) # WIll add New objects
p.bookmarked_profiles.all() # Will return all objects
p.bookmarked_profiles.all().count() # Will return count of objects
https://docs.djangoproject.com/en/2.0/topics/db/examples/many_to_many/ 强文本
答案 1 :(得分:0)
您可以通过ManyToMnayField()
中可用的add()
添加查询集来做到这一点
p = Profile.objects.get(pk=1)
profiles_to_bookmark = Profile.objects.all()
p.bookmarked_profiles.add(*profiles_to_bookmark) #Note the star *
使用all()
可以设置所有带有书签的个人资料,count()
将返回总数
p.bookmarked_profiles.all()
p.bookmarked_profiles.count()