【问题标题】:getting the error "The QuerySet value for an exact lookup must be limited to one result using slicing. "收到错误“必须使用切片将精确查找的 QuerySet 值限制为一个结果。”
【发布时间】:2022-01-16 07:39:30
【问题描述】:

我正在尝试用 django 创建一个 lms。因此,我为可以上传课程的教师设置了一个单独的模型,并为课程设置了另一个模型。代码如下: 模型.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>

我得到错误:

有什么办法可以解决这个问题?

【问题讨论】:

    标签: django django-models django-views django-templates


    【解决方案1】:

    instrQuerySet,您不能像以前那样直接将其添加到过滤器中。 您可以通过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})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      • 2020-11-13
      • 1970-01-01
      • 2020-05-05
      相关资源
      最近更新 更多