Python 禁止直接分配到多对多集合的前端。改为使用lab_test.set()
这是我的观点Python 禁止直接分配到多对多集合的前端。改为使用lab_test.set(),python,django,m2m,Python,Django,M2m,这是我的观点 class Lab_Group(models.Model): group = models.CharField(max_length=100, unique=True,) class Lab(models.Model): laboratory = models.CharField(max_length=50, unique=True) group = models.ForeignKey(Lab_Group, on_delete=models.CASCADE
class Lab_Group(models.Model):
group = models.CharField(max_length=100, unique=True,)
class Lab(models.Model):
laboratory = models.CharField(max_length=50, unique=True)
group = models.ForeignKey(Lab_Group, on_delete=models.CASCADE)
class LabRequest(models.Model):
ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)
lab_test = models.ManyToManyField(Lab)
这是我的模板
def LabRequestToGenerateView(request, pk):
doctor = Doctor.objects.filter(user_id=request.user.id, active='Yes')
for doc in doctor:
ticket = get_object_or_404(
Ticket, pk=pk, has_cancelled=0, is_active=0, doctor=doc.id)
lab_group = Lab_Group.objects.all()
if request.POST.get('lab_test'):
obj = LabRequest()
obj.lab_test = request.POST.get('lab_test')
obj.ticket = ticket
obj.created_by = request.user.id
obj.save()
obj.save_m2m()
messages.success(
request, 'Lab Request has been sent successfully.')
return redirect('/dashboard/lab-request')
context = {
'title': 'Laboratory Request',
'valueBtn': 'Save',
'form': form,
'rl': rl,
'lab_group': lab_group
}
return render(request, 'dashboard/laboratory_request.html', context)
{%csrf_令牌%}
{lab_组%中lab_组的%
{{labu群|上}}
{lab_group.lab_set.all%}
{%if lab.active=='Yes%}
{{lab}}
{%endif%}
{%endfor%}
{%endfor%}
拯救
当我试图保存它时,会显示以下错误:
禁止直接分配到多对多集合的前端。改用lab\u test.set()
我被困在这里一个星期了,请随时问我任何问题。谢谢。解决了您的问题。然而,这里有一个解决方案
<form action="." method="POST">
{% csrf_token %}
<div class="row">
{% for lab_group in lab_group %}
<div class="col-3 border">
<label for="">{{ lab_group|upper }}</label>
{% for lab in lab_group.lab_set.all %}
{% if lab.active == 'Yes' %}
<div class="form-check">
<input type="checkbox" value="{{ lab.id }}" name="lab_test">
{{ lab }}
</div>
{% endif %}
{% endfor %}
</div>
{% endfor %}
</div>
<div class="form-group float-right">
<button type="submit" name="submit" class="btn btn-success btn-sm" value=" {{ valueBtn }} "> <i
class="fa fa-save"></i>
Save</button>
</div>
</form>
解决你的问题。然而,这里有一个解决方案
<form action="." method="POST">
{% csrf_token %}
<div class="row">
{% for lab_group in lab_group %}
<div class="col-3 border">
<label for="">{{ lab_group|upper }}</label>
{% for lab in lab_group.lab_set.all %}
{% if lab.active == 'Yes' %}
<div class="form-check">
<input type="checkbox" value="{{ lab.id }}" name="lab_test">
{{ lab }}
</div>
{% endif %}
{% endfor %}
</div>
{% endfor %}
</div>
<div class="form-group float-right">
<button type="submit" name="submit" class="btn btn-success btn-sm" value=" {{ valueBtn }} "> <i
class="fa fa-save"></i>
Save</button>
</div>
</form>
他在使用forms.py中的表单,但我不一样,我在使用自定义HTML字段她在使用forms.py中的表单,但我不一样,我在使用自定义HTML字段,但这种方式只获取1个数据,如果我想检查更多类似3个数据,并像旧示例一样保存到数据库,怎么样?如果我改为getlist('lab_test),它会说这个错误:
int()参数必须是字符串、类似字节的对象或数字,而不是'list'
如果我改为'lab=lab.objects.filter(id_uin=lab_id)`它会说int()参数必须是字符串、类似字节的对象或数字,而不是'QuerySet'
使用filter()
或全部添加,然后保存。按照链接的问题进行操作。但是这种方法只能获取1个数据,如果我想检查更多类似3个数据,并像旧示例一样保存到数据库中,怎么样?如果我改为getlist('lab_test),它会说这个错误:int()参数必须是字符串、类似字节的对象或数字,而不是'list'
如果我改为'lab=lab.objects.filter(id_uin=lab_id)`它会说int()参数必须是字符串、类似字节的对象或数字,而不是'QuerySet'
使用filter()
或全部添加,然后保存。跟随链接的问题。