F() expressions don't allow assignment of Foreign Key values on instances
|Reported by:||russellm||Owned by:||nobody|
|Component:||Database layer (models, ORM)||Version:||1.1-beta|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
Lines 93-102 of the expressions model test define the following test case:
# F expressions cannot be used to update attributes which are foreign keys, or # attributes which involve joins. >>> test_gmbh.point_of_contact = None >>> test_gmbh.save() >>> test_gmbh.point_of_contact is None True >>> test_gmbh.point_of_contact = F('ceo') Traceback (most recent call last): ... ValueError: Cannot assign "<django.db.models.expressions.F object at ...>": "Company.point_of_contact" must be a "Employee" instance.
There's no reason this sort of assignment shouldn't be possible - it just requires the appropriate handling on the related field.
Change History (5)
comment:1 Changed 5 years ago by russellm
- Needs documentation unset
- Needs tests unset
- Patch needs improvement unset
- Triage Stage changed from Unreviewed to Accepted
- Version changed from 1.0 to 1.1-beta-1