Как вернуть модель и модели, связанные с этой моделью, с отношениями "многие ко многим"

У меня есть две модели. Комментарий и его "Подкомментарии":

class Comment(models.Model):

    ....
    author = models.CharField(max_length=80)
    published = models.DateTimeField(auto_now_add=True)
    email = models.EmailField(blank=True)
    url = models.URLField(blank=True)
    post = models.ForeignKey(Entry)
    subcomments = models.ManyToManyField('Subcomment', blank=True)
    ....


class Subcomment(models.Model):

    ....
    author = models.CharField(max_length=80)
    published = models.DateTimeField(auto_now_add=True)
    email = models.EmailField(blank=True)
    url = models.URLField(blank=True)
    mcomment = models.ForeignKey(Comment)
    ....

Я пытаюсь сделать подписку RSS, чтобы оставлять комментарии. Я использую следующий код:

class EntryCommentsFeed(Feed):

    ....
    def items(self, obj):
        return Comment.not_spam.filter(post=obj).order_by('-published')[:15]
    ....

Но он возвращает только комментарии без подкомментариев, и я понятия не имею, как самому вернуть комментарий с его "подкомментами" и упорядочить по дате.

1 ответ

Решение

Это невозможно. Наборы запросов модели всегда состоят только из объектов этого типа модели. Вы можете перебрать возвращенное Commentи получить Subcommentдля каждого, хотя:

for comment in Comment.not_spam.filter(post=obj).order_by('-published')[:15]:
    subcomments = comment.subcomment_set.all()
Другие вопросы по тегам