Python 如何使用get_object_或带有order_by(';?';)的_404获取随机图像
我想从模型中获取随机对象,但若数据库中并没有数据,我想返回404页 这一行代码对我很有用:Python 如何使用get_object_或带有order_by(';?';)的_404获取随机图像,python,django,Python,Django,我想从模型中获取随机对象,但若数据库中并没有数据,我想返回404页 这一行代码对我很有用: dummy_image=DummyImage.objects.order_by('?').first().image_url.url 但是我想使用get\u object\u或\u 404快捷方式 所以我试了一下: dummy_image = get_object_or_404(DummyImage).order('?').first().image_url.url 但它不起作用,并导致问题。
dummy_image=DummyImage.objects.order_by('?').first().image_url.url
但是我想使用get\u object\u或\u 404
快捷方式
所以我试了一下:
dummy_image = get_object_or_404(DummyImage).order('?').first().image_url.url
但它不起作用,并导致问题。它说它返回了两个以上的对象
如何解决此问题?快捷方式使用
get()
,因此如果过滤后的查询集返回多个对象,则会引发错误
您可以分割查询集,将其限制为一个对象:
dummy_image = get_object_or_404(DummyImage.objects.order_by('?')[:1]).image_url.url
或者,您可以手动引发Http404
异常。这段代码有点长,但您可能会发现它更清楚正在发生的事情
from django.http import Http404
dummy_image = DummyImage.objects.order_by('?').first()
if dummy_image is None:
raise Http404
else:
dummy_image = dummy_image.image_url.url