根据模型属性获取django对象id

dojqjjoe  于 2023-04-07  发布在  Go
关注(0)|答案(4)|浏览(155)

我有一个名为“Places”的基本模型,它具有以下视图:

def view_index(request, place_name):

用户将使用如下URL访问该视图:

http://server.com/kansas

“堪萨斯”是存储在模型“Places”内名为“name”的字段中的值。
问题是我不知道如何仅根据对象名获得对象id,有办法吗?

rqdpfwrv

rqdpfwrv1#

就像这样:

place = Places.objects.get(name='kansas')
print(place.id)
uyhoqukh

uyhoqukh2#

因为你只需要id,所以你应该只查询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

id = Place.objects.only('id').get(name='kansas').id
nnsrf1az

nnsrf1az3#

假设你正在捕获包含"kansas"的URL部分,并且它被设置为place_name参数,你必须在你的模型管理器上对你要查找"kansas"的任何模型字段执行一个简单的filter
如果您的URLMap看起来像:

('(?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

5w9g7ksd

5w9g7ksd4#

除了已接受的响应,您还可以探索“地点”模型中所有地点的id,如下所示:
使用列表解析或任何其他方便的数据结构。

objects = Place.objects.all()
id_name_pair = [(object.id, object.name) for object in objects]

这将给予一个元组列表,其中包含每个“Place”模型的名称及其对应的ID。

相关问题