显示与 Django 模型关联的表单时出现重复请求

问题描述 投票:0回答:1

我正在 Django 网站上显示 SendRnxForm 表单。该表单链接到 FilesData 模型并显示一个下拉列表 -

class SendRnxForm(forms.ModelForm):
    class Meta:
        model = FilesData
        fields = ['el_type',]
        widgets = {
            'el_type': forms.Select(attrs={'class': 'form-select', 'id': 'elTypeId'}),
        }
class FilesData(models.Model):
    el_type = models.ForeignKey(ElType,  blank=False,  default='1',  on_delete=models.DO_NOTHING, related_name='files', verbose_name="Types el")

下拉列表应包含链接表的所有记录,默认选择第一条记录。 FilesData 与模型关联 -

class ElType(models.Model):
    name = models.CharField(max_length=16, db_index=True, verbose_name="Types el")
    slug = models.SlugField(max_length=24, unique=True, db_index=True, verbose_name="Код")

    def __str__(self):
        return self.name

这种情况下,从数据库获取数据的请求是重复的

SELECT `dashApp_cordtype`.`id`,
       `dashApp_cordtype`.`name`,
       `dashApp_cordtype`.`slug`
  FROM `dashApp_cordtype`
 ORDER BY `dashApp_cordtype`.`id` ASC

Views基于CreateView:

class dashForm(DataMixin, CreateView):
    form_class = SendRnxForm
    template_name = 'dashApp/dash.html'
    success_url = reverse_lazy('home')

在这种情况下我怎样才能摆脱重复的请求?

我不知道在哪里使用 select_lated/prefetch_lated

python django django-models django-views django-forms
1个回答
0
投票
def get_queryset(self):
    queryset = FilesData.objects.select_related('el_type').all()
    return queryset

您可以使用 get_queryset 方法来自定义使用 select 相关。

© www.soinside.com 2019 - 2024. All rights reserved.