2011-06-24 61 views
1

我有2個名爲'作者'和'條目'的模型定義如下。Django多對多關係後向查詢

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'。

我知道,我可以檢索通過

e = Entry.objects.get(authors) 

進入和作者之間的關係是可以提取的作者ID?

我知道在後端,Django爲作者和條目創建一個表,但我想從'Entry'中的方法更新'msgtoauthors'。

在此先感謝。

回答

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。 (更新)

+0

我有類條目 內的功能'高清msgtoat(個體經營): #UPDATE msgtoauthor' 所以我想用上面來更新變量功能爲每個作者的特定條目。我不能改變這個函數的類。 – melsk

+0

是的,有點。在我這樣做之前,我需要查詢作者身份證的權利? – melsk

1

如果所有作者得到相同的值,你可以這樣做:

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

試試這個:

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) 

    def msgtoat(self, message): 
     self.authors.update(msgtoauthor=message) 

例如,要更新條目:

entry.msgtoat('Hello')