LINUX.ORG.RU

[django] contenttype.generic.genericforeignkey, objects.values, сортировка по свежести комментария

 


0

1

Как можно улучшить такой вот код, что-то туплю. Есть идеи? Кроме кеширования.

@register.inclusion_tag('publication/last_commented.phtml')
def last_commented(request):
    contenttype = ContentType.objects.get_for_model(Article)
    comment_list = Comment.objects.filter(contenttype = contenttype).order_by('-id')
    value_list = comment_list.values("key")
    key_list = [value['key'] for value in value_list]
    #object_list = Article.objects.filter(pk__in = key_list)
    object_list = list()
    for value in key_list:
        object_list.append(Article.objects.get(pk = value))
    return {'object_list': object_list, 'request': request}

Ответ на: комментарий от trashymichael

просто меня коробит такое держать в проекте :\

trashymichael ★★★
() автор топика
    object_list = list()
    for value in key_list:
        object_list.append(Article.objects.get(pk = value))
object_list = [Article.objects.get(pk=value) for value in key_list]

Ибо append очень медленный.

key_list = [value['key'] for value in value_list]
key_list = map(lambda e: e['key'], value_list)

Хотя это вроде как одно и то же.

Много временных ненужных объектов, желательно обойтись без их использования.

request вообще в функции не используется.

ksv
()

Article.objects.filter(comments__contenttype = contenttype).order_by('-comments__id')

вероятно как-то так. помню точно что можно сортировать через FK

rainy
()
Ответ на: комментарий от rainy

там нет связи Article.comments, там у Comment GenericForeignKey по contenttype и key (object_id)

trashymichael ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.