I have a Django application.
Solely in terms of ORM/query/DB performance, are the following ways of retrieving an object equivalent (i.e. in a situation where there was just a single Car object for owner_id = pk in the table currently):
Car.objects.get(owner_id=pk)
Car.objects.filter(owner_id=pk).latest('id')
owner is a foreign key relationship, hence is a DB index. Are the SQL queries produced equivalent (or the same)?
Since you are using the Foreign key, get() and filter() will give the same performance. 
How you see get()
objs = Car.objects.get(owner_id=pk)
How get() is actually implemented by Django
objs = Car.objects.filter(owner_id=pk)
   if len(objs) == 1:
      obj = objs[0]
   else if len(objs) > 1:
      # Multiple objects returned
   else: 
      # we have no object!  do something
      pass
For your case, I would recommend using get() because 
you can be sure that only one element is returned
it is designed for this purpose
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With