【发布时间】:2019-07-31 16:04:28
【问题描述】:
向我的表单添加依赖下拉列表,但是当我发布数据时,它返回表单无效并出现无效选择错误。
在我的表单的 init 覆盖中,如果我消除下拉查询集,那么它就可以工作,但这违背了目的。
我的看法:
def add_have(request, id=None):
if request.method == "POST":
print("User: {}".format(request.user))
for key, value in request.POST.items():
print('{}: {}'.format(key, value) )
form = HaveForm(request.POST)
if form.is_valid():
model_instance = form.save(commit=False)
model_instance.profile = request.user
model_instance.save()
else:
print(form.errors)
print("FORM IS INVALID")
return redirect('display_have_list')
else:
form = HaveForm()
return render(request, 'add_have.html', {'form': form})
我的表格:
class HaveForm(forms.ModelForm):
class Meta:
model = Have
fields = ['category', 'item']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['category'].queryset=Category.objects.all()
self.fields['item'].queryset = Items.objects.none()
我的模特:
class Category(models.Model):
name = models.CharField(max_length=200)
class Items(models.Model):
name = models.CharField(max_length=200)
category = models.ForeignKey('Category', on_delete=models.SET_NULL, null=True)
description = models.TextField(max_length=1000)
class Have(models.Model):
profile = models.ForeignKey('users.Profile', on_delete=models.SET_NULL, null=True)
category = models.ForeignKey('Category', on_delete=models.SET_NULL, null=True)
item = models.ForeignKey('Items', on_delete=models.SET_NULL, null=True)
我收到的错误消息暗示它没有加载项目:
web_1 | User: <my_username>
web_1 | csrfmiddlewaretoken: <my_token>
web_1 | category: 1
web_1 | item: 4496
web_1 | <ul class="errorlist"><li>item<ul class="errorlist"><li>Select a valid choice. That choice is not one of the available choices.</li></ul></li></ul>
web_1 | FORM IS INVALID
web_1 | [31/Jul/2019 09:01:24] "POST /trade/add_have/ HTTP/1.1" 302 0
web_1 | [31/Jul/2019 09:01:24] "GET /trade/display_have_list/ HTTP/1.1" 200 2638
web_1 | [31/Jul/2019 09:01:24] "GET /static/css/styles.css HTTP/1.1" 404 1767
如果我从初始化中限制项目查询集,那么它保存得很好。我知道问题出在我初始化表单的方式上,但我不确定如何解决。
【问题讨论】:
标签: django