Django 如何在数据库中插入多个选项并显示
我的型号是:Django 如何在数据库中插入多个选项并显示,django,Django,我的型号是: class LabRequest(models.Model): ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE) lab_test = models.ManyToManyField(Lab) 我的表格 class LabRequestModelForm(forms.ModelForm): class Meta: model = LabRequest fi
class LabRequest(models.Model):
ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)
lab_test = models.ManyToManyField(Lab)
我的表格
class LabRequestModelForm(forms.ModelForm):
class Meta:
model = LabRequest
fields = ['ticket', 'lab_test']
widgets = {
'lab_test': forms.CheckboxSelectMultiple,
}
我的观点
def LabRequestToGenerateView(request):
if form.is_valid():
obj = form.save(commit=False)
obj.created_by = request.user.id
obj.save()
return render(request, 'dashboard/laboratory_request.html', {'form': form})
我的模板
<form action="." method="POST">
{% csrf_token %}
{{ form.as_p }}
<div class="form-group float-right">
<button type="submit" name="submit" class="btn btn-success btn-sm" > <i
class="fa fa-save"></i>
Save</button>
</div>
</form>
{% for rl in rl %}
<label for=""> Ticket: {{ rl.ticket }} </label>
<p> Lab Tests: {{ rl.lab_test }}</p>
{% endfor %}
{%csrf_令牌%}
{{form.as_p}}
拯救
{rl%中的rl为%r}
票证:{rl.Ticket}
实验室测试:{rl.Lab_test}
{%endfor%}
所以,它显示为一个复选框,这很好。但当我想保存一些数据时,它只保存票证,而不保存实验室测试?那么,我如何保存这两个呢
正如您所看到的,它只显示票证,票证是Ubed Gedi ALi,我想看的是实验室测试,它显示的是appname.modelname.None几乎可以肯定问题出在显示数据的地方,而不是保存数据的地方。请显示视图和模板。请看,我更新了我的帖子,请帮助
lab\u test
是一个多对多字段,您需要迭代rl.lab\u test.all
。(在您现有的循环中,您不应该使用与查询集相同的项名称。)执行此操作后,实验室测试:{{{rl.Lab_test.all}输出为实验室测试:读取-您没有调用表单。save_m2m()
。
<form action="." method="POST">
{% csrf_token %}
{{ form.as_p }}
<div class="form-group float-right">
<button type="submit" name="submit" class="btn btn-success btn-sm" > <i
class="fa fa-save"></i>
Save</button>
</div>
</form>
{% for rl in rl %}
<label for=""> Ticket: {{ rl.ticket }} </label>
<p> Lab Tests: {{ rl.lab_test }}</p>
{% endfor %}