F() expressions don't allow assignment of Foreign Key values on instances
|Reported by:||Russell Keith-Magee||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 7 years ago by
|Patch needs improvement:||unset|
|Triage Stage:||Unreviewed → Accepted|
|Version:||1.0 → 1.1-beta-1|