我当前正在使用Django构建应用程序,并且在执行get_object_or_404()
请求时遇到问题。
object = get_object_or_404(Model,some_field=some_parameter)
其中some_parameter = cleaned_data['some_parameter']
形式。从数据库中每个模型对象的some_field
的值中,我希望返回该对象,除了得到404。
因此,我通过这样做print()
来some_field
字段的值列表。
values = Model.objects.all().values_list('some_field', flat=True)
...返回...
<QuerySet [u'value_1', u'value_2', u'value_3']>
......其中value_2例如是我在表单中输入的some_parameter
值!
有人知道为什么即使我在字段中输入的参数实际上与对象字段之一匹配也找不到对象吗?
谢谢
为清楚起见进行编辑:
请注意,some_field
字段在模型和表单中均为CharField
。然后,将字符串作为普通的CharField
html元素输入到input[type='text']
中。
使用模型示例进行编辑:
class Model(models.Model):
some_field = models.CharField(max_length=10,blank=True,null=True,unique=True)
在保存此模型之前,我还要确保some_field
绝对是唯一的,因为我将字段与以前的条目进行了比较,然后创建了唯一的条目。
答案 0 :(得分:0)
get_object_or_404
应该返回一个对象(实际上只是Model.objects.get
上的一个薄包装),因此,如果有多个记录与您的查询匹配,则确实会产生404。如果您期望一个以上的记录,那么显然不是正确的工具。
答案 1 :(得分:0)
get_object_or_404()
返回对象,而不是查询集。如果您需要该对象,则必须发送主键(唯一)或唯一标识(通常为pk)该对象的任何键。
like-get_object_or_404(BookModel, pk=some_id)