Фильтр Джанго по методике модели, вид
Имеет смысл, что наборы запросов не могут быть отфильтрованы методами модели, наборы запросов могут быть отфильтрованы только по базе данных, а база данных не имеет представления о методе модели.
Тем не менее, должен быть хороший способ сделать что-то подобное, верно?
class Topic(models.Model):
"An individual discussion post in the forum"
created = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(User)
title = models.CharField(max_length=60)
content = models.CharField(max_length=2000)
view_count = models.PositiveIntegerField(default=0, editable=False)
def last_reply(self):
"latest reply for a forum topic"
if self.replies.all():
return self.replies.latest('created')
return None
class TopicReply(models.Model):
"A reply to a discussion topic or to another reply"
created = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(User)
topic = models.ForeignKey(Topic, related_name="replies")
content = models.CharField(max_length="1000")
parent_reply = models.ForeignKey("self", null=True, blank=True, related_name='replies')
Вот мои две модели, я хочу упорядочить темы по дате их последнего ответа. С помощью набора запросов я попытался сортировать в памяти return sorted(queryset, key=lambda t:t.last_reply())
но есть пустые значения, и это ошибки в Python 3. Вместо возврата None в last_reply
метод, я попытался вернуть пустую строку или TopicReply.objects.none()
но отсортированная функция не любит ничего из этого.