2012-11-05 70 views
0

我想統計標籤。我有Post模型和標籤模型和Post模型有很多很多領域的標籤。當我想添加新帖時,我添加了帖子標籤,它必須增加標籤數量。如何保存多個字段?

我的帖子和標籤型號:

class Post(models.Model): 

    tags = models.ManyToManyField(Tag,blank=True,null=True,verbose_name=_('tags')) 

    def save(self) 
     super(Post, self).save() 
     for i in self.tags.all(): 
     i.save() 

class Tag(models.Model): 

    name=models.CharField(max_length=30,verbose_name=_('name')) 
    count = models.IntegerField(blank=True,null=True,default=0) 
    slug = models.SlugField(blank=True,null=True) 

    def save(self): 
     self.slug = slugify(self.name.upper()) 
     self.count = Post.objects.filter(tags__name=self.name).count() 
     super(Tag, self).save() 

當我增加了新的崗位,我擡頭一看標籤模式,看看計數並沒有改變,但是當我按在標籤管理保存按鈕,然後我看到了真正的計數。但是,當我查看標籤管理員而不按標籤中的保存按鈕時,我希望看到真正的計數。

另外我希望當我編輯帖子時,它不應該再次增加標籤數量。

+0

你似乎在處理[this](http://stackoverflow.com/quest 1925383/issue-with-manytomany-relationships-not-updating-inmediatly-after-save)issue。 –

回答

0

你可以做到以下幾點:

class Post(models.Model): 

    tags = models.ManyToManyField(Tag,blank=True,null=True,verbose_name=_('tags')) 

    def save(self) 
     super(Post, self).save() 
     for tag in self.tags : 
      tag.count = tag.post_set.count() 
      tag.save() 

OR,而不是保存的計數值到字段,在需要的時候只是做查詢:

tag.post_set.count() 

,你可以將函數添加到Tag爲了得到這個簡單:

def count(self) : 
    return self.post_set.count() 
+0

問題依然存在。 – aysekucuk

+0

發佈您的管理表單和屏幕抓圖,以便我可以看到你在說什麼。另外,你選擇了哪種解決方案? –

+0

actualy我沒有做任何特殊的標籤管理員或發佈管理員。我能做什麼 ? – aysekucuk

相關問題