ManyToManyField无法正常工作

时间:2017-01-13 17:24:38

标签: python django python-3.5

我想创建一个人与它所提到的新闻文章之间的关系。

人/ models.py

class Person(models.Model):
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=40)
    news_mentioned = models.ManyToManyField(News, blank=True)

新闻/ models.py

class News(models.Model):
    title = models.CharField(max_length=250)
    abstract = models.TextField(max_length=1000, null=True, blank=True)
    description = models.TextField(max_length=5000, null=True, blank=True)
    url = models.URLField(unique=True)
    ne_person = models.CharField(max_length=250, blank=True, null=True)

从芹菜任务中提取:

article = News.objects.get(pk=pk)
person = Person.objects.update_or_create(first_name=fname, last_name=lname)
person.save()
mentioned = Person.objects.get(person.id).news_mentioned(article.id)

我在这里犯了什么错误

2 个答案:

答案 0 :(得分:1)

模型是正确的。 要向人员添加文章,您需要使用.add()

秒。 https://docs.djangoproject.com/en/1.10/topics/db/examples/many_to_many/#many-to-many-relationships

试试这样:

article = News.objects.get(pk=pk)
person, created = Person.objects.update_or_create(first_name=fname, last_name=lname)
person.save()
person.news_mentioned.add(article)
mentioned = person.news_mentioned.all()

答案 1 :(得分:1)

我确实隔离了问题,结果证明该问题与update_or_create有关,因为它返回了一个元组。

它现在的工作原理如下:

            person, created = Person.objects.update_or_create(first_name=fname, last_name=lname)
            person.save()
            article = News.objects.get(pk=pk)
            person.news_mentioned.add(article)
相关问题