Итак, у меня есть эта модель:
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 , я просто хочу значение конкретной страницы, которая отображается. Как мне достичь чего-то подобного?