如何与现有记录创建多对多关系?

时间:2017-05-11 20:36:04

标签: django django-models django-queryset

在我的Django 1.11博客应用中,我在authorsposts之间存在多对多关系。

# models.py

class Post(models.Model):
  title = models.CharField(max_length=200)


class Author(models.Model):
  name = models.CharField(max_length=200)
  posts = models.ManyToManyField(Post, related_name='authors')

我可以创建一个如下作者的帖子:

$ post = Post.objects.create(title='My post')
$ post.authors.create(name='John Doe')

但是,我如何明确地创建帖子和作者并通过关联连接它们?

$ post = Post.objects.create(title='My post')
$ author = Author.create(name='John Doe')
$ post.authors.????(author)

如果我致电post.authors.get_or_create(name='John Doe'),它会创建一个新作者,这不是我想要的。

我可以通过将其作为一个单独的模型(PostAuthor)直接访问连接表,但有没有办法通过QuerySet API将现有作者连接到帖子?

1 个答案:

答案 0 :(得分:1)

试试这个:

post.authors.add(author)