这是另一个愚蠢的问题。我真的对django很陌生,我不知道该怎么办。有人可以帮帮我吗?或发送一些文档页面?目的是使标记选择器分配给为其显示的子代。有一些我的代码。
我的HTML
db.collection.aggregate([
{
$addFields: {
filteredCollections: {
$filter: {
input: "$collections",
as: "collection",
cond: {
$setIsSubset: [
["$$collection.items"],
["a", "g", "d", "e"]
]
}
}
}
}
},
{
$match: {
"filteredCollections.0": {$exists: true}
}
}
])
views.py
$setIsSubset
models.py
{% if child %}
{% for c in child %}
<tr>
<th>
{{c.ChildName}}<br>
</th>
<th>
<form action="{% url 'marks:addmark' class.id sc.id %}" method="POST">
{% csrf_token %}
<select required name="sub">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
<option value=6>6</option>
<option value=7>7</option>
<option value=8>8</option>
<option value=9>9</option>
<option value=10>10</option>
<option value=11>11</option>
<option value=12>12</option>
</select>
<button type="submit">готово</button>
</form>
</th>
</tr>
{% endfor %}
{% endif %}
urls.py
def mlat(request, classid, subjectid):
a = Class.objects.get( id = classid )
b = SubjectClas.objects.get( id = subjectid )
d = Child.objects.filter(ChildClass = a)
c = Mark.objects.filter(MarkSubjet = b)
return render(request, 'marks/mlat.html', {'class':a, 'sc':b, 'subjectsyes':c, 'child':d})
def addmark(request, classid, subjectid):
a = Class.objects.get( id = classid )
b = SubjectClas.objects.get( id = subjectid )
d = Child.objects.filter(ChildClass = a)
c = Mark.objects.filter(MarkSubjet = b)
Mark.objects.create(Markd = request.POST['sub'], MarkSubjet = a, MarkOwner = d)
return HttpResponseRedirect(reverse('marks:mlat', args=[b.id, a.id,]))
感谢您的帮助!
答案 0 :(得分:1)
问题来自您:
d = Child.objects.filter(ChildClass = a)
.filter返回一个查询集,您不能将查询集分配给Mark.MarkOwner。
将其更改为:
d = Child.objects.get(ChildClass = a)
返回一个Child实例。
但是,如果Child不存在,则会返回错误,因此我建议使用:
if Child.objects.filter(ChildClass = a).exists():
d = Child.objects.get(ChildClass = a)
这样,您可以处理不存在子代而不会崩溃的情况