Показать, является ли публикация закрепленной новостью - PullRequest
0 голосов
/ 05 августа 2020

Django 3.0.8

admin.py

class PostAdmin(admin.ModelAdmin):
    list_display = ("is_pinned",)

    def _get_pinned_news(self):
        pinned_news = None
        try:
            pinned_news = PinnedNews.objects.get(key="pinned_news")
        except ObjectDoesNotExist as e:
            pass # Do nothing
        return pinned_news.pinned_post

    def is_pinned(self, obj):
        pinned_news = self._get_pinned_news()
        return obj == pinned_news

    is_pinned.boolean = True

Этот код показывает желаемый результат, показывая, какое сообщение является закрепленные новости (на главной странице). Но это крайне неэффективно, так как запрос выбора выполняется в al oop.

Кстати, django -cachalot будет использоваться в производстве. Так что, возможно, действительно будет сделан только один выбор из базы данных.

Не могли бы вы сказать мне, есть ли лучшее решение?

...