diff options
Diffstat (limited to 'django/db/models/query.py')
| -rw-r--r-- | django/db/models/query.py | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py index 9fd116c4a6..10952195db 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -504,12 +504,14 @@ class QuerySet: lookup[f.name] = lookup.pop(f.attname) params = {k: v for k, v in kwargs.items() if LOOKUP_SEP not in k} params.update(defaults) + property_names = self.model._meta._property_names invalid_params = [] for param in params: try: self.model._meta.get_field(param) except exceptions.FieldDoesNotExist: - if param != 'pk': # It's okay to use a model's pk property. + # It's okay to use a model's property if it has a setter. + if not (param in property_names and getattr(self.model, param).fset): invalid_params.append(param) if invalid_params: raise exceptions.FieldError( |
