我已经阅读了这个问题的每个答案,但没有一个完全解决了我的问题。我希望有人可以帮我理解我的代码中的错误。我的模型中有一个字段,我希望该字段中的所有值都显示在表单的下拉列表中。我能够实现这一目标,但当我尝试保存时,它会说“选择一个有效的选择。这个选择不是可用的选择之一。”任何帮助将不胜感激。
models.py
class Item(models.Model):
Product = models.ForeignKey("Product", related_name = "Items")
Name = models.CharField(max_length=1000, blank=True, null=True)
Tag = models.CharField(max_length=1000, blank=True, null=True)
forms.py
class ItemForm(ModelForm):
items = Item.objects.values_list('Name', flat=True)
item_choices = [(item, item) for item in items]
Name = forms.ModelChoiceField(items, widget=forms.Select())
class Meta:
model = Item
fields = ['Name', 'Tag']
views.py
def newknowledgebase(request):
itemformset = modelformset_factory(Item, form=ItemForm, extra=2)
items = itemformset(queryset=Item.objects.none(), prefix='items', )
if request.method=='POST':
items = itemformset(request.POST, queryset=Item.objects.none(), prefix='items', )
item = request.POST.get('items')
for form in items:
form.fields['Name'].choices = [(item, item)]
if items.is_valid():
items.save()
context = {
'items':items,
}
return render(request, 'newknowledgebase.html', context )
html文件
<div id="items" class="panel-collapse collapse">
<table class="table table-bordered">
<tbody>
{{ items }}
</tbody>
</table>
</div>
答案 0 :(得分:1)
试试这个
Name = forms.ChoiceField(item_choices, widget=forms.Select())