Django中的“无法分配”错误问题

时间:2019-08-06 10:43:02

标签: python django postgresql

我的模板中有类似的内容。

<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,
)

我该如何解决?

1 个答案:

答案 0 :(得分:2)

Services.SectionOneToOneField,因此您需要分配Section实例,而不是其名称。

根据您的代码,如果将选项值设置为pk,则可能会起作用。

 <select name='section'>
  {% for item in all_sections %}
          <option value="{{ item.pk }}">{{ item.SectionName }}</option>
  {% endfor %}
 </select>

正如Iain在评论中所建议的那样,最好将视图更改为使用Django表单,而不是手动呈现select输入。