mirror of
https://github.com/django/django.git
synced 2025-09-24 23:49:12 +00:00
This commit is contained in:
parent
7528979153
commit
23b6594026
@ -1249,12 +1249,11 @@ class Query(BaseExpression):
|
||||
|
||||
@property
|
||||
def _subquery_fields_len(self):
|
||||
if self.has_select_fields:
|
||||
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)
|
||||
if not self.has_select_fields or not self.select:
|
||||
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):
|
||||
clone = self.clone()
|
||||
|
@ -460,6 +460,11 @@ class CompositePKFilterTests(TestCase):
|
||||
queryset = User.objects.filter(comments__in=subquery)
|
||||
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):
|
||||
msg = "Cast expression does not support composite primary keys."
|
||||
with self.assertRaisesMessage(ValueError, msg):
|
||||
|
Loading…
x
Reference in New Issue
Block a user