Дублирование запроса при отображении формы, связанной с моделью Django

Я отображаю форму SendRnxForm на сайте Django. Форма связана с моделью 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_related/prefetch_related

def get_queryset(self):
    queryset = FilesData.objects.select_related('el_type').all()
    return queryset

Вы можете использовать метод get_queryset для пользовательского использования select related.

Вернуться на верх