Переопределенные варианты Django не проходят валидацию
Я переопределяю опцию choices, определенную в модели, которая является просто пустым кортежем.
Вот мой models.py
#For assigning Ciena loopbacks
class Dia_Address(models.Model):
order_reference = models.ForeignKey(Order, null=True, on_delete=models.CASCADE)
equipment_hostname = models.CharField(max_length=500, null=True, verbose_name="Equipment Hostname", help_text="Hostname of the DIA device.")
subnet = models.CharField(max_length=200, null=True, choices=DIA_SUBNETS, help_text="Subnet in which the DIA device requires an address.")
Содержание моего файла forms.py, который переопределяет выбор модели.
class Dia_AddressForm(ModelForm):
class Meta:
model = Dia_Address
fields = ['equipment_hostname', 'subnet']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
#order_id = str(order_reference.id)
dcn_address_handler = AddressHandler
subnet_id = "94806"
DIA_SUBNETS = ()
NEW_SUBNETS = dcn_address_handler.get_subnet_data(dcn_address_handler, subnet_id)
DIA_SUBNETS = NEW_SUBNETS + DIA_SUBNETS
self.fields['subnet'].choices = DIA_SUBNETS
Содержание моего файла views.py
def addDia_Address(request, pk_test):
order = Order.objects.get(id=pk_test)
dia_address_form = Dia_AddressForm()
if request.method == 'POST':
dia_address_form = Dia_AddressForm(request.POST)
dia_address_form.instance.order_reference = order
if dia_address_form.is_valid():
dia_address_form.save()
return redirect('order', pk_test)
context = {'dia_address_form':dia_address_form}
return render(request, 'orchestration/dia_address_form.html', context)
Проблема в том, что эта форма не проходит валидацию. Я могу выбрать соответствующую опцию из выпадающего меню формы. Есть ли способ отключить эту проверку только для одного поля символов?
Валидация формы не проходит из-за пустого кортежа choices в вашей модели. Независимо от того, что вы задали в форме, валидация будет учитывать то, что диктует модель - в данном случае ничего! Удалите пустой кортеж, и ваша форма будет подтверждена.