使用 Wagtail 页面模型获取查询集中外键的特定字段的最数据库有效方法是什么?



所以我有这个模型:

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')

但是然后我得到了所有玩家详细信息页面条目的值,我只想要正在显示的特定页面的值。我怎样才能实现这样的事情?

可能像这样的东西就是你所追求的。这是你两个答案的结合。

@property
def position(self):
    return self.field_position_relationship.values('field_position')

最新更新