Фильтр Джанго по методике модели, вид

Имеет смысл, что наборы запросов не могут быть отфильтрованы методами модели, наборы запросов могут быть отфильтрованы только по базе данных, а база данных не имеет представления о методе модели.

Тем не менее, должен быть хороший способ сделать что-то подобное, верно?

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() но отсортированная функция не любит ничего из этого.

0 ответов

Другие вопросы по тегам