Как вернуть модель и модели, связанные с этой моделью, с отношениями "многие ко многим"
У меня есть две модели. Комментарий и его "Подкомментарии":
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()