首页 > 解决方案 > 自我模型上的多对多:如何向此关系添加新实例

问题描述

我有一个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()

标签: pythondjangodjango-models

解决方案


检查 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/强文本


推荐阅读