我有一个名为“Places”的基本模型,它具有以下视图:
def view_index(request, place_name):
用户将使用如下URL访问该视图:
http://server.com/kansas
“堪萨斯”是存储在模型“Places”内名为“name”的字段中的值。问题是我不知道如何仅根据对象名获得对象id,有办法吗?
rqdpfwrv1#
就像这样:
place = Places.objects.get(name='kansas') print(place.id)
uyhoqukh2#
因为你只需要id,所以你应该只查询id。一个简单的get将检索数据库行上的所有字段。这两种方法都只检索你想要的数据。
id
get
id = Place.objects.filter(name='kansas').values('id')[0]['id']
或者使用values_list:
id = Place.objects.filter(name='kansas').values_list('id', flat=True).first()
另一种方法使用only:
only
id = Place.objects.only('id').get(name='kansas').id
nnsrf1az3#
假设你正在捕获包含"kansas"的URL部分,并且它被设置为place_name参数,你必须在你的模型管理器上对你要查找"kansas"的任何模型字段执行一个简单的filter。如果您的URLMap看起来像:
"kansas"
place_name
filter
('(?P<place_name>\w+)$', 'myapp.view.view_index')
那你应该可以
object_list = Model.objects.filter(place_name = place_name)
以获取一个对象列表,这些对象的place_name与URL中的place_name匹配。从那里,列表中的每个对象都应该有一个id(除非您重命名了ID字段),您可以像任何其他python对象属性一样获取该id。
5w9g7ksd4#
除了已接受的响应,您还可以探索“地点”模型中所有地点的id,如下所示:使用列表解析或任何其他方便的数据结构。
objects = Place.objects.all() id_name_pair = [(object.id, object.name) for object in objects]
这将给予一个元组列表,其中包含每个“Place”模型的名称及其对应的ID。
4条答案
按热度按时间rqdpfwrv1#
就像这样:
uyhoqukh2#
因为你只需要
id
,所以你应该只查询id
。一个简单的get
将检索数据库行上的所有字段。这两种方法都只检索你想要的数据。或者使用values_list:
另一种方法使用
only
:nnsrf1az3#
假设你正在捕获包含
"kansas"
的URL部分,并且它被设置为place_name
参数,你必须在你的模型管理器上对你要查找"kansas"
的任何模型字段执行一个简单的filter
。如果您的URLMap看起来像:
那你应该可以
以获取一个对象列表,这些对象的
place_name
与URL中的place_name
匹配。从那里,列表中的每个对象都应该有一个id
(除非您重命名了ID字段),您可以像任何其他python对象属性一样获取该id
。5w9g7ksd4#
除了已接受的响应,您还可以探索“地点”模型中所有地点的id,如下所示:
使用列表解析或任何其他方便的数据结构。
这将给予一个元组列表,其中包含每个“Place”模型的名称及其对应的ID。