Osc*_*lal 23 django django-models django-urls django-views
我有一个名为"Places"的基本模型,它具有以下视图:
def view_index(request, place_name):
Run Code Online (Sandbox Code Playgroud)
用户将使用以下URL访问该视图:
http://server.com/kansas
Run Code Online (Sandbox Code Playgroud)
"堪萨斯"是存储在模型"位置"内名为"名称"的字段中的值.
问题是我无法弄清楚如何根据对象名称获取对象id.有没有办法做到这一点?
gru*_*czy 52
像这样:
place = Places.objects.get(name='kansas')
print place.id
Run Code Online (Sandbox Code Playgroud)
既然你只想要id,你应该只查询id.天真get将检索数据库行上的所有字段.这两种方法中的任何一种都只能检索您想要的数据.
id = Place.objects.filter(name='kansas').values('id')[0]['id']
Run Code Online (Sandbox Code Playgroud)
或者使用values_list:
id = Place.objects.filter(name='kansas').values_list('id', flat=True).first()
Run Code Online (Sandbox Code Playgroud)
另一种方法用途only:
id = Place.objects.only('id').get(name='kansas').id
Run Code Online (Sandbox Code Playgroud)
该视图的 URL 映射是什么样的?假设您正在捕获其中的 URL 部分,并将"kansas"其设置为参数place_name,则您必须filter在模型管理器上对您要查找的任何模型字段进行简单的操作"kansas"。
如果您的 URL 映射如下所示:
('(?P<place_name>\w+)$', 'myapp.view.view_index')
Run Code Online (Sandbox Code Playgroud)
那么你应该能够做
object_list = Model.objects.filter(place_name = place_name)
Run Code Online (Sandbox Code Playgroud)
获取具有place_name与 URL 中的匹配的对象的列表。从那里开始,该列表中的每个对象都应该有一个id(除非您已重命名 ID 字段),您可以像任何其他 python 对象属性一样使用它。
| 归档时间: |
|
| 查看次数: |
48485 次 |
| 最近记录: |