Get django object id based on model attribute

前端 未结 3 753
别那么骄傲
别那么骄傲 2020-12-25 11:50

I have a basic model named \"Places\" which has this view:

def view_index(request, place_name):

The user will access that view with a URL l

相关标签:
3条回答
  • 2020-12-25 12:19

    Since you only want id, you should only query for id. A naive get will retrieve all fields on the database row. Either of these methods will only retrieve the data you want.

    id = Place.objects.filter(name='kansas').values('id')[0]['id']
    

    Or with values_list:

    id = Place.objects.filter(name='kansas').values_list('id', flat=True).first()
    

    Another method uses only:

    id = Place.objects.only('id').get(name='kansas').id
    
    0 讨论(0)
  • 2020-12-25 12:28

    Like this:

    place = Places.objects.get(name='kansas')
    print place.id
    
    0 讨论(0)
  • 2020-12-25 12:29

    What does your URL mapping for that view look like? Assuming you're capturing the part of your URL with "kansas" in it and that is getting set to the place_name argument, you'll have to do a simple filter on your model's manager on whatever model field you're looking for "kansas" in.

    If your URL mapping looks like:

    ('(?P<place_name>\w+)$', 'myapp.view.view_index')
    

    Then you should be able to do just

    object_list = Model.objects.filter(place_name = place_name)
    

    to get a list of objects who have a place_name that matches the one in the URL. From there, each of the objects in that list should have an id (unless you've renamed the ID field) that you can get to like any other python object attribute.

    0 讨论(0)
提交回复
热议问题