Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Python Django-获取对象或404错误_Python_Django - Fatal编程技术网

Python Django-获取对象或404错误

Python Django-获取对象或404错误,python,django,Python,Django,我目前正在使用Django构建一个应用程序,在执行get\u object\u或\u 404()请求时遇到问题 object = get_object_or_404(Model,some_field=some_parameter) 其中some\u parameter=cleaned\u data['some\u parameter']以一种形式出现。从每个模型对象的some_字段的DB中的值来看,我希望返回对象,但得到的是404 因此,我print() values = Model.obje

我目前正在使用Django构建一个应用程序,在执行
get\u object\u或\u 404()
请求时遇到问题

object = get_object_or_404(Model,some_field=some_parameter)
其中
some\u parameter=cleaned\u data['some\u parameter']
以一种形式出现。从每个模型对象的
some_字段的DB中的值来看,我希望返回对象,但得到的是404

因此,我
print()

values = Model.objects.all().values_list('some_field', flat=True)
…它返回

<QuerySet [u'value_1', u'value_2', u'value_3']>

同样在保存此模型之前,我要确保
某些字段
绝对是唯一的,因为我将该字段与以前的条目进行比较,然后创建一个唯一的条目。

get\u object\u或
应该返回一个对象(实际上它只是
model.objects.get
上的一个薄型包装器)因此,如果有多条记录与您的查找相匹配,它将引发404。如果你期望不止一条记录,那么它显然不是适合这项工作的工具

获取对象或404()
返回对象,而不是查询集。如果需要该对象,则必须发送主键(unique)或唯一标识该对象的任何键(usally pk)


比如-
get\u object\u或\u 404(BookModel,pk=some\u id)

您在查询之前是否尝试打印
some\u parameter=cleaned\u data['some\u parameter']
?@Lemayzeur是的,我在终端中打印了'value\u 2',除非没有引号,否则请确保值中没有前导空格或尾随空格和/或换行符。如果执行
Model.objects.get(some_field='value_2')
?@delsim,我尝试时不会打印任何内容,因此如果有多条记录与您的查找相匹配,则会产生404。如果有多个匹配项,我认为这部分不正确。相反,
MultipleObjectsReturned
将引发错误,并显示:
get()返回了多个模型名,返回了全部记录
我希望在我的案例中只返回一条记录,与字段匹配的值就在那里(如值列表部分的打印所示:u'value_2'),但由于某种原因它与之不匹配。@Lemayzeur
get_object_或_404
在这种情况下会引发一个
mutlipleobjectsreen
,的确,我应该仔细检查一下。但是,如果查找可以返回多条记录,那么它仍然不是正确的工具;)是的,这就是我一直在做的事情(见问题的第一行代码)。查询集刚刚打印在那里,以显示该值确实在数据库对象集中。请编辑代码并添加您正在搜索的模型和字段。some_字段是否可以唯一标识您的对象?用模型更新了我的原始问题!您确定存在具有此值的对象吗。请在shell或admin中进行doblecheck,因为这将返回对象
class Model(models.Model):
    some_field = models.CharField(max_length=10,blank=True,null=True,unique=True)