收到错误 "The QuerySet value for an exact lookup must be limited to one result using slicing. "
getting the error "The QuerySet value for an exact lookup must be limited to one result using slicing. "
我正在尝试用 django 创建 lms。所以我有一个单独的模型供可以上传课程的教师使用,还有另一个模型用于课程。代码如下:
models.py
class teacher(models.Model):
name=models.ForeignKey(User, on_delete= models.CASCADE)
area=models.ManyToManyField(subject)
description=RichTextField()
class course(models.Model):
title=models.CharField(max_length=500)
areas=models.ManyToManyField(subject)
description=RichTextField()
instructor=models.ForeignKey(teacher, on_delete= models.CASCADE)
material=models.CharField(max_length=1000)
def __str__(self):
return self.title
在我的 views.py 文件中:
instr=teacher.objects.filter(name=request.user)
data2=models.course.objects.filter(instructor__name__username=instr)
return render(request, "course/profile.html", {'datas':a, 'courses': data, 'creations':data2})
在模板中:
<div class="col-md-12"><label class="labels">Created Courses</label>
{% for data in creations %}
<form action="/course/" method="GET">
<div class="w3-display-container w3-col s12 m4 l4 w3-section">
<div class="card" style="width: 30rem; height: 30rem;">
<div class="card-body hover_trans_grey">
<h5 class="card-title">{{data.title}}</h5>
<h6 class='card-title'>Uploaded by {{data.instructor.name}}</h6>
<button type="submit" class="btn btn-primary w3-button" name="s" value="{{data.pk}}">Go to Course</button>
</div>
</div>
</div>
</form>
{% endfor %}
</div>
我收到错误:
解决这个问题的方法是什么?
instr
是一个 QuerySet
你不能像你那样直接将它添加到过滤器中。
您可以使用 request.user
直接获取课程列表
data2=models.course.objects.filter(instructor__name=request.user)
return render(request, "course/profile.html", {'datas':a, 'courses': data, 'creations':data2})
如果你想先得到 teacher
那么你必须使用 get
:
instr=teacher.objects.get(name=request.user)
data2=models.course.objects.filter(instructor=instr)
return render(request, "course/profile.html", {'datas':a, 'courses': data, 'creations':data2})
我正在尝试用 django 创建 lms。所以我有一个单独的模型供可以上传课程的教师使用,还有另一个模型用于课程。代码如下: models.py
class teacher(models.Model):
name=models.ForeignKey(User, on_delete= models.CASCADE)
area=models.ManyToManyField(subject)
description=RichTextField()
class course(models.Model):
title=models.CharField(max_length=500)
areas=models.ManyToManyField(subject)
description=RichTextField()
instructor=models.ForeignKey(teacher, on_delete= models.CASCADE)
material=models.CharField(max_length=1000)
def __str__(self):
return self.title
在我的 views.py 文件中:
instr=teacher.objects.filter(name=request.user)
data2=models.course.objects.filter(instructor__name__username=instr)
return render(request, "course/profile.html", {'datas':a, 'courses': data, 'creations':data2})
在模板中:
<div class="col-md-12"><label class="labels">Created Courses</label>
{% for data in creations %}
<form action="/course/" method="GET">
<div class="w3-display-container w3-col s12 m4 l4 w3-section">
<div class="card" style="width: 30rem; height: 30rem;">
<div class="card-body hover_trans_grey">
<h5 class="card-title">{{data.title}}</h5>
<h6 class='card-title'>Uploaded by {{data.instructor.name}}</h6>
<button type="submit" class="btn btn-primary w3-button" name="s" value="{{data.pk}}">Go to Course</button>
</div>
</div>
</div>
</form>
{% endfor %}
</div>
我收到错误:
解决这个问题的方法是什么?
instr
是一个 QuerySet
你不能像你那样直接将它添加到过滤器中。
您可以使用 request.user
data2=models.course.objects.filter(instructor__name=request.user)
return render(request, "course/profile.html", {'datas':a, 'courses': data, 'creations':data2})
如果你想先得到 teacher
那么你必须使用 get
:
instr=teacher.objects.get(name=request.user)
data2=models.course.objects.filter(instructor=instr)
return render(request, "course/profile.html", {'datas':a, 'courses': data, 'creations':data2})