获取Django的对象ID基于模型属性
问题描述:
我有一个基本的型号命名为“邻居”其中有这样的观点:获取Django的对象ID基于模型属性
def view_index(request, place_name):
用户将访问一个网址这一观点像这样的:
http://server.com/kansas
“堪萨斯”是存储在模型“地点”内名为“名称”的字段中的值。
问题是,我不知道如何获得基于对象名称的对象ID。有没有办法做到这一点?
答
像这样:
place = Places.objects.get(name='kansas')
print place.id
答
什么是该视图的URL映射是什么样子?假设你在其中捕获了部分网址"kansas"
,并且该参数设置为place_name
,你必须在模型的管理器上对您要查找的任何模型字段"kansas"
中的filter
进行简单处理。
如果你的URL映射是这样的:
('(?P<place_name>\w+)$', 'myapp.view.view_index')
那么你应该能够做到这
object_list = Model.objects.filter(place_name = place_name)
得到谁拥有相匹配的一个place_name
对象的列表在URL中。从那里,该列表中的每个对象都应该有一个id
(除非您已经重命名了ID字段),您可以像其他任何python对象属性一样获得该对象。
答
既然你只想要id
,你应该只查询id
。天真get
将检索数据库行上的所有字段。这两种方法都只会检索您想要的数据。
id = Place.objects.filter(name='kansas').values('id')[0]['id']
另一种方法是使用only
:
id = Place.objects.only('id').get(name='kansas').id
+0
与接受的答案相比,这种方式的执行效率会更高吗? – 2017-08-18 19:10:45
哦,我...我傻,我怎么能不弄明白?谢谢:-) – 2011-01-11 15:45:41