employee = Employee(first_name="Name", last_name="Name") employee.type_id = 4 employee.save()
ForeignKey fields store their value in an attribute with
_id at the end, which you can access directly to avoid visiting the database.
_id version of a
ForeignKey is a particularly useful aspect of Django, one that everyone should know and use from time to time when appropriate.
caveat: [ < Django 2.1 ]
@RuneKaagaard points out that
employee.type is not accurate afterwards in recent Django versions, even after calling
employee.save() (it holds its old value). Using it would of course defeat the purpose of the above optimisation, but I would prefer an accidental extra query to being incorrect. So be careful, only use this when you are finished working on your instance (eg
Note: As @humcat points out below, the bug is fixed in Django 2.1