Не работает queryset в django forms
Итак, имеется модель:
class Lines(models.Model):
id = models.AutoField(primary_key=True, verbose_name='ID')
piping = models.ForeignKey(GasPiping, related_query_name='piping_formku',
blank=True, null=True, verbose_name='МГ', on_delete=models.PROTECT)
cs = models.ForeignKey(Cs, related_query_name='cs_formku', blank=True,
null=True, verbose_name='КС', on_delete=models.PROTECT)
pressure_rated = models.FloatField(
blank=True, null=True, verbose_name='Давление номинальное')
pressure_current = models.FloatField(
blank=True, null=True, verbose_name='Давление текущее')
pressure_max = models.FloatField(
blank=True, null=True, verbose_name='Давление максимальное')
pressure_min = models.FloatField(
blank=True, null=True, verbose_name='Давление минимальное')
begin_valve = models.FloatField(
blank=True, null=True, verbose_name='Начало участка')
end_valve = models.FloatField(
blank=True, null=True, verbose_name='Конец участка')
line_diameter = models.IntegerField(
blank=True, null=True, verbose_name='Диаметр газопровода')
linetype = models.ForeignKey(LineType, related_query_name='linetype_formku',
blank=True, null=True, verbose_name='Тип участка', on_delete=models.PROTECT)
etan = models.BooleanField(blank=True, null=True, verbose_name='Этан')
pts_1 = models.FloatField(blank=True, null=True, verbose_name='ПТС_1')
pts_2 = models.FloatField(blank=True, null=True, verbose_name='ПТС_2')
имеется форма:
piping = forms.ModelChoiceField(queryset=GasPiping.objects.all())
cs = forms.ModelChoiceField(queryset=Cs.objects.all())
linetype = forms.ModelChoiceField(queryset=LineType.objects.all())
fields = (
'piping',
'cs',
'linetype',
'etan',
'begin_valve',
'end_valve',
'line_diameter',
'pts_1',
'pts_2',
'pressure_rated',
'pressure_current',
'pressure_min',
'pressure_max',
)
widgets = {
'piping': forms.Select(
attrs={'placeholder': 'МГ', 'class': 'form-select', 'value': ''}),
'cs': forms.Select(
attrs={'placeholder': 'КС', 'class': 'form-select', 'value': ''}),
'linetype': forms.Select(
attrs={'placeholder': 'Тип участка', 'class': 'form-select', 'value': ''}),
'etan': forms.Select(
choices=[(True, 'Относится к этану'),
(False, 'Не относится к этану')],
attrs={'placeholder': 'Этан', 'class': 'form-select', 'value': ''}),
'begin_valve': forms.TextInput(
attrs={'placeholder': 'Начало участка', 'class': 'form-control', 'value': ''}),
'end_valve': forms.TextInput(
attrs={'placeholder': 'Конец участка', 'class': 'form-control', 'value': ''}),
'line_diameter': forms.TextInput(
attrs={'placeholder': 'Диаметр газопровода', 'class': 'form-control', 'value': ''}),
'pts_1': forms.TextInput(
attrs={'placeholder': 'ПТС_1', 'class': 'form-control', 'value': ''}),
'pts_2': forms.TextInput(
attrs={'placeholder': 'ПТС_2', 'class': 'form-control', 'value': ''}),
'pressure_rated': forms.TextInput(
attrs={'placeholder': 'Давление номинальное', 'class': 'form-control', 'value': ''}),
'pressure_current': forms.TextInput(
attrs={'placeholder': 'Давление текущее', 'class': 'form-control', 'value': ''}),
'pressure_min': forms.TextInput(
attrs={'placeholder': 'Давление минимальное', 'class': 'form-control', 'value': ''}),
'pressure_max': forms.TextInput(
attrs={'placeholder': 'Давление максимальное', 'class': 'form-control', 'value': ''}),
}
И шаблон:
{% if form.errors %} {% for field in form %} {% for error in field.errors %}
<div
class="hidden-error"
value='Ошибка в поле "{{ field.label }}": {{ error }}'
></div>
{% endfor %} {% endfor %} {% endif %} {% for field in form.visible_fields %}
<div class="form-group row mb-2">
<label for="{{field.auto_id}}" class="col-sm-4 col-form-label"
>{{field.label}}</label
>
<div class="col-sm-8">{{field}}</div>
</div>
{% endfor %}
Я заметил, что если в форме поменять ModelChoiceField queryset, допустим, везде сделать привязку к модели LineType, то ничего не меняется, если вообще удалить эту строку, то тоже ничего. Почему так?