2012-11-05 3 views
0

태그를 집계하고 싶습니다. 나는 포스트 모델과 태그 모델을 가지고 있고 포스트 모델은 태그에 manytomany 필드를 가지고있다. 게시물을 추가 할 때 새 게시물을 추가하려면 태그 수를 늘려야합니다.여러 필드를 저장하는 방법은 무엇입니까?

내 게시물 및 태그 모델 :

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 ion/1925383/issue-with-manytomany-relationships-in-updating-inmedi-after-save) 문제가 발생했습니다. –

답변

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

사실 나는 tag admin이나 post admin에서 특별한 일을하지 않는다. 내가 무엇을 할 수 있을지 ? – aysekucuk

관련 문제