链式下拉验证错误形式作品

问题描述

按照教程创建链接下拉列表。一切正常,但会引发不必要的验证错误

这是一个基本的 3 字段形式,创建了一个带有姓名、国家和城市的人物对象。

视图.py

from django.shortcuts import render,redirect,get_object_or_404
from .forms import CustomerForm

from .forms import PersonCreationForm
from .models import Person,City



def store(request):
    form = CustomerForm()
    context = {'form': form}
    return render(request,'store/store.html',context)

def cart(request):
    form = CustomerForm()
    context = {'form': form}
    return render (request,'store/cart.html',context)    

def checkout(request):
    form = CustomerForm()
    context = {'form': form}
    return render(request,'store/checkout.html',context)

def signup(request):
    context = {}
    return render(request,'store/signup.html',context)  





def home(request):
    if request.method == 'POST':
        form = CustomerForm(request.POST)
        if form.is_valid():
            pass  # does nothing,just trigger the validation
    else:
        form = CustomerForm()
    return render(request,'shop.html',{'form': form}) 


def person_create_view(request):
    form = PersonCreationForm()
    if request.method =='POST':
        form = PersonCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('person_add')
    return render(request,'store/ho.html',{'form': form})      

def person_update_view(request,pk):
    person = get_object_or_404(Person,pk = pk)
    form = PersonCreationForm(instance = person)
    if request.method == 'POST':
        form = PersonCreationForm(request.POST,instance=person)
        if form.is_valid():
            form.save()
            return redirect('person_change',pk = pk)
        return render(request,{'form': form})  


#ajax

def load_cities(request):
    country_id = request.GET.get('country_id')
    cities = City.objects.filter(country_id = country_id)
    return render(request,'store/city_dropdown_list_options.html',{'cities':cities})

Forms.py

from django.forms import ModelForm
from .models import Customer,Person,City
from django import forms

class CustomerForm(ModelForm):
    class Meta:
        model = Customer
        fields = '__all__'


class PersonCreationForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = '__all__'

    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.fields['city'].queryset = City.objects.none()

        if 'country' in self.data:
            try:
                country_id = int(self.data.get('country'))
                self.fields['city'].queryset = City.objects.filter(country_id = country_id)
            except(ValueError,TypeError):
                pass
        elif self.instance.pk:
            self.fields['city'].queryset = self.instance.country.city_set.order_by('name')   

在 forms.py 第 14 行,它说-

self.fields['city'].queryset = City.objects.none()

当我尝试提交表单时,此行抛出验证错误。在教程中,他们添加了 if/else 参数,这解决了问题,错误消失了。

错误:“选择一个有效的选项。该选项不是可用选项之一”

就我而言,错误仍然出现。如果我忽略它并重新选择城市并提交,它就可以正常工作。

这几乎就像在那行停顿了一下,然后系统突然意识到还有更多的代码

我该如何解决这个问题。感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)