Каков наиболее эффективный способ получения определенных полей внешнего ключа в наборе запросов с использованием моделей страниц Wagtail? - PullRequest
0 голосов
/ 29 апреля 2019

Итак, у меня есть эта модель:

class FieldPosition(Orderable):
    page = ParentalKey('PlayerDetailPage', on_delete=models.CASCADE, related_name='field_position_relationship')
    field_position = models.CharField(verbose_name=_('Field position'), max_length=3, choices=FIELD_POSITION_CHOICES, null=True)

А это модель страницы трясогузки:

class PlayerDetailPage(Page):

    content_panels = [ InlinePanel('field_position_relationship', label=_('Field position'), max_num=3), ]

Я сделал свойство в модели страницы:

@property
def position(self):
    position = [
        n.field_position for n in self.field_position_relationship.all()
        ]
        return position

Так что я могу получить доступ к field_position в моем шаблоне с помощью:

{% for p in  page.position %}
{{ p }}
{% endfor %}

Но есть ли лучший способ сделать это? Я чувствую, что слишком сильно бью по базе данных и у меня много запросов. Я бы предпочел что-то вроде: PlayerDetailPage.objects.values('field_position_relationship__field_position')

Но затем я получаю значения всех записей PlayerDetailPage , я просто хочу значение конкретной страницы, которая отображается. Как мне достичь чего-то подобного?

1 Ответ

1 голос
/ 29 апреля 2019

Вероятно, что-то вроде этого - то, что вы ищете. Это комбинация двух ответов, которые у вас были.

@property
def position(self):
    return self.field_position_relationship.values('field_position')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...