Tôi có một biểu mẫu với một ModelChoiceField, và tôi muốn tải nó trên một bảng từ DB của tôi. Nếu tôi sử dụng queryset này trên init hình thức của tôi, sau đó nhìn tôi form.is_valid hoạt động tốt:Django - Cách hoạt động của bộ truy vấn ModelChoiceField?
self.fields['categoria_formfield'].queryset = sitio_categoria.objects.exclude(categoria='patrimonio').values_list('idCategoria',flat=True)
Đó là mã hiển thị danh sách của id trên ModelChoiceField, nhưng những gì tôi cần nó để hiển thị các loại danh sách. Vì vậy, tôi sử dụng:
self.fields['categoria_formfield'].queryset = sitio_categoria.objects.exclude(categoria='patrimonio').values_list('categoria',flat=True)
Nhưng sử dụng mã này .is_valid không xác nhận và i recive một lỗi dạng: "Chọn một lựa chọn hợp lệ lựa chọn Đó không phải là một trong những lựa chọn sẵn.." Một số đầu mối về những gì có thể là vấn đề?
MODEL
class sitio_categoria(models.Model):
idCategoria = models.AutoField(primary_key=True)
categoria = models.CharField(max_length=30, null=False, unique=True)
MẪU
class anadirComercioPaso1_form(forms.Form):
categoria_formfield = forms.ModelChoiceField(widget=forms.Select(attrs={'size':'13', 'onchange':'this.form.action=this.form.submit()'}), queryset=sitio_categoria.objects.none())
def __init__(self, *args, **kwargs):
super(anadirComercioPaso1_form, self).__init__(*args,**kwargs)
self.fields['categoria_formfield'].queryset = sitio_categoria.objects.exclude(categoria='patrimonio').values_list('categoria',flat=True)