Django多对多关系向后查询

时间:2011-06-24 15:45:28

标签: django django-models

我有两个名为'作者'和'进入'的模型,定义如下。

class Author(models.Model):
    name = models.CharField(max_length=50)
    email = models.EmailField()
    msgtoauthor = models.TextField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateTimeField()
    authors = models.ManyToManyField(Author)

我正试图从'Entry'访问'Author.msgtoauthor'。

我知道,我可以通过

检索Entry和Author之间的关系
e = Entry.objects.get(authors)

是否可以提取作者ID?

我知道在后端,Django为作者和条目创建了一个表,但我想从'Entry'中的方法更新'msgtoauthors'。

提前致谢。

4 个答案:

答案 0 :(得分:3)

你的意思是

for author in my_entry.authors.all():
    author.msgtoauth = 'Here is new content'
    author.save()

Entry.authors返回RelatedManagermy_entry.authors.all()是QuerySet,返回Author对象。请参阅https://docs.djangoproject.com/en/1.3/ref/models/relations/https://docs.djangoproject.com/en/1.3/topics/db/models/#many-to-many-relationships

(更新)。

答案 1 :(得分:2)

试试这个:

entry.msgtoat('Hello')

例如,要更新条目:

{{1}}

答案 2 :(得分:1)

如果所有作者都能获得相同的价值:

entry.authors.update(msgtoauthor='Hey there!')

答案 3 :(得分:0)

https://github.com/Ry10p/django-Plugis/blob/master/courses/models.py 第52行

class name():
    the_thing1 = models.CharField()
    another = models.TextField()


class name2():
    the_thing2 = models.ForignKey(the_thing1)
    another2 = models.ForignKey(another)

-Cheers