2009-06-17 21 views
2

Bei Verwendung von django.contrib.comments gibt es sowieso die umgekehrte Beziehung zu einem Modell hinzufügen, das Kommentare hat?Django Kommentare umgekehrte Beziehung

Zum Beispiel:

post = Post.objects.all()[0] 
comments = post.comments.all() 

Antwort

5

Ja, sollten Sie in der Lage zu tun:

from django.contrib.contenttypes import generic 
class Post(models.Model): 
    ... 
    comments = generic.GenericRelation(Comments) 

pro dem Django docs auf reverse generic relations

+0

In Django 1.3, habe ich die folgenden verwenden musste. Offenbar verwendet 'BaseCommentAbstractModel' einen nun nicht standardmäßigen Namen für sein' object_id_field'? – tehfink

1

kam ich mit einer anderen Art und Weise, dies zu tun (Warum? Weil mir keine andere Möglichkeit bekannt war, diese Zeit zu tun. Es beruht auf einer abstrakten Modellklasse, von der alle Modelle im System abgeleitet sind. Das abstrakte Modell selbst hat eine Methode, comments, definiert, die bei Aufruf eine QuerySet aller mit dem entsprechenden konkreten Objekt verknüpften Kommentarobjekte zurückgibt. Ich setzte es so: `Kommentare = generic.GenericRelation (Kommentare, object_id_field = 'object_pk')`:

from django.db import models 
from django.contrib.contenttypes.models import ContentType 
from django.contrib.comments.models import Comment 

class AbstractModel(models.Model): 

    def comments(self): 
     """Return all comment objects for the instance.""" 
     ct = ContentType.objects.get(model=self.__class__.__name__) 
     return Comment.objects.filter(content_type=ct, 
            object_pk=self.id) 

    class Meta: 
     abstract = True 
Verwandte Themen