mirror of
https://github.com/django/django.git
synced 2025-10-26 15:16:09 +00:00
Fixed #26153 -- Reallowed Q-objects in ForeignObject.get_extra_descriptor_filter().
This commit is contained in:
committed by
Tim Graham
parent
1d86d4c72b
commit
353aecbf8c
@@ -8,6 +8,7 @@ from django.apps import apps
|
||||
from django.core import checks, exceptions
|
||||
from django.db import connection, router
|
||||
from django.db.backends import utils
|
||||
from django.db.models import Q
|
||||
from django.db.models.deletion import CASCADE, SET_DEFAULT, SET_NULL
|
||||
from django.db.models.query_utils import PathInfo
|
||||
from django.db.models.utils import make_model_tuple
|
||||
@@ -337,8 +338,13 @@ class RelatedField(Field):
|
||||
rh_field.attname: getattr(obj, lh_field.attname)
|
||||
for lh_field, rh_field in self.related_fields
|
||||
}
|
||||
base_filter.update(self.get_extra_descriptor_filter(obj) or {})
|
||||
return base_filter
|
||||
descriptor_filter = self.get_extra_descriptor_filter(obj)
|
||||
base_q = Q(**base_filter)
|
||||
if isinstance(descriptor_filter, dict):
|
||||
return base_q & Q(**descriptor_filter)
|
||||
elif descriptor_filter:
|
||||
return base_q & descriptor_filter
|
||||
return base_q
|
||||
|
||||
@property
|
||||
def swappable_setting(self):
|
||||
|
||||
@@ -166,7 +166,7 @@ class ForwardManyToOneDescriptor(object):
|
||||
rel_obj = None
|
||||
else:
|
||||
qs = self.get_queryset(instance=instance)
|
||||
qs = qs.filter(**self.field.get_reverse_related_filter(instance))
|
||||
qs = qs.filter(self.field.get_reverse_related_filter(instance))
|
||||
# Assuming the database enforces foreign keys, this won't fail.
|
||||
rel_obj = qs.get()
|
||||
# If this is a one-to-one relation, set the reverse accessor
|
||||
|
||||
Reference in New Issue
Block a user