75👍
You don’t need to pass the department id, the instance itself is enough.
The following should work just fine:
new_team = Team(
nickname = team_name,
employee_id = employee_id,
department_id = Department.objects.get(password = password,
department_name = department_name))
Just a note: don’t ever name your foreign fields something_id.
That something is enough. Django is meant to make things easy from the user’s perspective and the _id
suffix means you’re thinking of the database layer. In fact, if you named your column department
, django will automatically create department_id
column in the database for you.
The way things are, you’re making Django create department_id_id
which is rather silly.
13👍
This came up first on a Google search so offering an alternative for newcomers. You can also do it this way in case you have handy access to the id and don’t want to do another query:
new_team = Team(
nickname = team_name,
employee_id = employee_id,
department_id_id = Department.objects.get(password = password, department_name = department_name).department_id
)
In short, {foreign_key_name}_id
if you want to assign the id directly.
- [Django]-Programmatically create a django group with permissions
- [Django]-Django: using blocks in included templates
- [Django]-Model not showing up in django admin
0👍
A different variant for @munsu ‘s answer. If you already have the id for the foreign field.
department_id = 2; #the department id for the new team
new_team = Team(
nickname = team_name,
employee_id = employee_id,
department_id = Department(id=department_id)
)
new_team.save()
# but
new_team.department_id.id # 2
new_team.department_id.department_name # None you cannot access any other fields
I don’t know if this would be useful for any case, but here it is. 🙂
- [Django]-Django south migration – Adding FULLTEXT indexes
- [Django]-Import error 'force_text' from 'django.utils.encoding'
- [Django]-Using django-rest-interface