对表单中的每个表单执行重复查询

2024-06-28 19:45:52 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的django应用程序中,我的用户可以有多个职位。ie:位置模型有一个指向用户模型的外键。通过使用djangomodelformset_factory我输出与当前登录用户相关联的所有位置,如下所示:

在视图.py公司名称:

class ABCUpdate(View):

    def get(self, request):
        user = request.user
        PositionFormSet = modelformset_factory(Position)
        formset = PositionFormSet(queryset=user.position_set.all().prefetch_related('symbol'))
        return render(request,
                      'some_template.html',
                      {'formset': formset})

一些_模板.html在

^{pr2}$

职位型号:

class Position(models.Model):

    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    symbol = models.OneToOneField(Symbol)
    # more fields...

some_template.html上的一个字段是symbol字段(即:我在上面的片段中使用prefetch_related的字段)。Symbol来自使用外键的不同模型。这意味着在html模板上,symbol字段是一个下拉列表,允许用户选择所需的符号。在

这一切都是正确的,但是问题是数据库正在查询表单集中的每个表单,以检索symbol的列表。例如,如果用户有10个位置,则每个位置将有一个symbol…的下拉列表,这将导致一个单独的数据库查询来检索所有符号。在

如何对所有可用的symbol进行一次查询,并将其用于表单集中每个表单中的下拉列表?在


Tags: 用户模型表单列表modelsrequestfactoryhtml
1条回答
网友
1楼 · 发布于 2024-06-28 19:45:52

我认为您应该在prefetch_related中指出与其他模型有链接的模型位置的所有字段,在这种情况下,您必须添加字段用户: PositionFormSet(queryset=user.position_set.all().prefetch_related('symbol', 'user'))。在


另外,它对我有用。在

相关问题 更多 >