mirror of
https://github.com/django/django.git
synced 2025-09-25 07:59:11 +00:00
This commit is contained in:
parent
7528979153
commit
23b6594026
@ -1249,12 +1249,11 @@ class Query(BaseExpression):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def _subquery_fields_len(self):
|
def _subquery_fields_len(self):
|
||||||
if self.has_select_fields:
|
if not self.has_select_fields or not self.select:
|
||||||
return sum(
|
|
||||||
len(self.model._meta.pk_fields) if field == "pk" else 1
|
|
||||||
for field in self.selected
|
|
||||||
)
|
|
||||||
return len(self.model._meta.pk_fields)
|
return len(self.model._meta.pk_fields)
|
||||||
|
return len(self.select) + sum(
|
||||||
|
len(expr.targets) - 1 for expr in self.select if isinstance(expr, ColPairs)
|
||||||
|
)
|
||||||
|
|
||||||
def resolve_expression(self, query, *args, **kwargs):
|
def resolve_expression(self, query, *args, **kwargs):
|
||||||
clone = self.clone()
|
clone = self.clone()
|
||||||
|
@ -460,6 +460,11 @@ class CompositePKFilterTests(TestCase):
|
|||||||
queryset = User.objects.filter(comments__in=subquery)
|
queryset = User.objects.filter(comments__in=subquery)
|
||||||
self.assertSequenceEqual(queryset, (self.user_2,))
|
self.assertSequenceEqual(queryset, (self.user_2,))
|
||||||
|
|
||||||
|
def test_filter_comments_by_users_subquery(self):
|
||||||
|
subquery = Comment.objects.filter(id=3).values("user")
|
||||||
|
queryset = Comment.objects.filter(user__in=subquery)
|
||||||
|
self.assertSequenceEqual(queryset, (self.comment_3,))
|
||||||
|
|
||||||
def test_cannot_cast_pk(self):
|
def test_cannot_cast_pk(self):
|
||||||
msg = "Cast expression does not support composite primary keys."
|
msg = "Cast expression does not support composite primary keys."
|
||||||
with self.assertRaisesMessage(ValueError, msg):
|
with self.assertRaisesMessage(ValueError, msg):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user