django 模型中 first() 和 filter() 之间的区别



我有InstituteDetailsModel,其中只有一个条目。我有另一个表学生详细信息,它在其一列中使用InstituteDetailsModel作为FK,如下所示:

institute = models.ForeignKey('institute.InstituteDetailsModel', to_field="sys_id", on_delete = models.PROTECT, null=False, blank=True)

现在,在存储学生详细信息时,我尝试使用以下两种方法从学院表中获取唯一的条目。第二种方法抛出错误Select a valid choice. That choice is not one of the available choices.而第一种方法工作正常。

我想知道两者之间有什么区别

InstituteDetailsModel.objects.filter(sys_id=1)

&

InstituteDetailsModel.objects.first()

以及为什么其中一个有效而另一个不起作用。

InstituteDetailsModel.objects.filter(sys_id=1)

当你执行上述操作时,这将返回 InstituteDetailsModel 的查询集

InstituteDetailsModel.objects.first()

这将返回 InstituteDetailsModel 的实例

所以你必须从查询集中的索引中获取数据,比如

ins = InstituteDetailsModel.objects.filter(sys_id=1)
ins = ins[0]

现在insInstituteDetailsModel.objects.first()的类型相同

如果InstituteDetailsModel模型没有任何条目,那么下面的代码将返回None。

InstituteDetailsModel.objects.first()

但下面将返回空白查询集

InstituteDetailsModel.objects.filter(sys_id=1)

最新更新