我的模板中有类似的内容。
<form action="" method="POST">
{% csrf_token %}
<select name='section'>
{% for item in all_sections %}
<option>{{ item.SectionName }}</option>
{% endfor %}
</select>
</form>
以及在我的view.py页面中:
obj=models.Section.objects.all()
context={
'all_sections':obj,
}
return render(request,'matab/add-service.html',context)
但是我得到的是保存数据时出错:
无法分配“'{item}'”:“ Services.Section”必须是“ Section”实例。
我的models.py也是如此:
class Section(models.Model):
SectionName=models.CharField(max_length=50)
SectionId=models.CharField(max_length=10)
class Services(models.Model):
Section=models.OneToOneField(
Section,
on_delete=models.CASCADE,
)
我该如何解决?
答案 0 :(得分:2)
Services.Section
是OneToOneField
,因此您需要分配Section
实例,而不是其名称。
根据您的代码,如果将选项值设置为pk,则可能会起作用。
<select name='section'>
{% for item in all_sections %}
<option value="{{ item.pk }}">{{ item.SectionName }}</option>
{% endfor %}
</select>
正如Iain在评论中所建议的那样,最好将视图更改为使用Django表单,而不是手动呈现select
输入。