Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何转换<;QuerySet[<;课程:BME108\U JUL2020>;]>;至';BME108&x27;用python?_Django_Python 3.6 - Fatal编程技术网

Django 如何转换<;QuerySet[<;课程:BME108\U JUL2020>;]>;至';BME108&x27;用python?

Django 如何转换<;QuerySet[<;课程:BME108\U JUL2020>;]>;至';BME108&x27;用python?,django,python-3.6,Django,Python 3.6,我在Windows10中将django2与python3.6一起使用。 我想在Django中查询sqlite数据库 当我试图向查询添加条件时,我应该使用上一个查询传递的条件。 但是,最后一个查询的结果是: 我需要的条件是“BME108” view.py: course_code = Course.objects.filter(semester_id = semester_id_1, term = 1) query_results_3 = courseInfo.objects.filter(co

我在Windows10中将django2与python3.6一起使用。 我想在Django中查询sqlite数据库

当我试图向查询添加条件时,我应该使用上一个查询传递的条件。 但是,最后一个查询的结果是:

我需要的条件是“BME108”

view.py:

course_code = Course.objects.filter(semester_id = semester_id_1, term = 1)
query_results_3 = 
courseInfo.objects.filter(code=course_code[:5]).values('title')
models.py

class CourseInfo(TimeStampedModel):  # school or center
code = models.CharField(max_length=20, unique=True, db_index=True)
title = models.CharField(max_length=200)
school = models.ForeignKey(School, on_delete=models.SET_NULL, blank=True, null=True)
postgraduate = models.BooleanField(default=False)  # indicate Postgraduate course
discipline = models.ForeignKey(Discipline, on_delete=models.SET_NULL, blank=True, null=True)  # should not be null
pattern = models.CharField(max_length=120, choices=PRESENTATION_PATTERN, blank=True, null=True,
                           help_text="Presentation Pattern")
type = models.CharField(max_length=2, choices=(('PT', 'Part-Time'), ('FT', 'Full-Time'), ('OL', 'Online')))
available = models.BooleanField(default=True)  # mean Active or Retired

semesters = models.ManyToManyField('Semester', through="Course")  # auto have semestercourse_set

# __str__ method is used to override default string returned by an object
def __str__(self):
    return "{} - {}".format(self.code, self.title)

class Meta:
    constraints = [models.UniqueConstraint(fields=['code', 'type'], condition=models.Q(available=True),
                                           name='unique_course_type')]
    ordering = ['code', ]


class Course(models.Model):  # CourseInfo Quota
courseInfo = models.ForeignKey(CourseInfo, on_delete=models.CASCADE)
semester = models.ForeignKey(Semester, on_delete=models.CASCADE)
term = models.IntegerField(default=1)  # Optional, Term start: 1 or 2
quota = models.IntegerField(blank=True, null=True)  # total student enrolment

titles = models.ManyToManyField('Title', through="Material")  # performance issue, it will load all books, for the DRF only

class Meta:
    # must add unique_together for course, course_type and semester
    ordering = ('semester',)

def __str__(self):
    return "{}_{}".format(self.courseInfo.code, self.semester)

如何转换为“BME108”?

用此代码替换课程模型的str函数

def __str__(self):
    return "{}".format(self.courseInfo.code)

首先调整课程模型中的
\uuu str\uu
函数,如下所示:

def\uuuu str\uuuuuu(自):
返回f“{self.courseInfo.code}”
这样,当您只打印课程对象时,它只显示代码

接下来,您希望从QuerySet中获取该元素。这可以通过多种方式实现。例如,您可以像处理列表一样循环它。或者,如果它始终是您想要的第一项,则可以在QuerySet上使用.first()

如果您更改了上述
\uuuu str\uuu
功能,这将提供您想要的输出:

course\u code=course.objects.filter(学期号=学期号,学期号=1)
打印(课程代码.first())#打印第一项

course\u code=course.objects.filter(学期号=学期号,学期号=1)
对于课程代码中的结果:#单独打印所有项目
打印(结果)

请分享您如何获得该查询集的代码?分享您的模型和视图更新@Ajay Kumarshowed now@SergeyPugach,当然,代码是QuerySet这似乎是一个很好的答案,但如果你能稍微解释一下你的代码,以便清楚你在做什么,这将是有益的:)错误显示“精确查找的QuerySet值必须限制为”值错误:精确查找的QuerySet值必须使用切片限制为一个结果。查询结果:对不起,我把查询弄混了。现在试试。