Fix unwanted ___ handling when a fieldname starts with an underscore.
This commit is contained in:
@@ -6,7 +6,8 @@ from __future__ import absolute_import
|
||||
|
||||
from django.db import models
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db.models import Q
|
||||
from django.db.models import Q, FieldDoesNotExist
|
||||
from django.db.models.related import RelatedObject
|
||||
|
||||
from functools import reduce
|
||||
|
||||
@@ -146,9 +147,21 @@ def translate_polymorphic_field_path(queryset_model, field_path):
|
||||
raise AssertionError(e)
|
||||
|
||||
else:
|
||||
# the user has only given us the class name via __
|
||||
# the user has only given us the class name via ___
|
||||
# => select the model from the sub models of the queryset base model
|
||||
|
||||
# Test whether it's actually a regular relation__ _fieldname (the field starting with an _)
|
||||
# so no tripple ClassName___field was intended.
|
||||
try:
|
||||
# rel = (field_object, model, direct, m2m)
|
||||
field = queryset_model._meta.get_field_by_name(classname)[0]
|
||||
if isinstance(field, RelatedObject):
|
||||
# Can also test whether the field exists in the related object to avoid ambiguity between
|
||||
# class names and field names, but that never happens when your class names are in CamelCase.
|
||||
return field_path # No exception raised, field does exist.
|
||||
except FieldDoesNotExist:
|
||||
pass
|
||||
|
||||
# function to collect all sub-models, this should be optimized (cached)
|
||||
def add_all_sub_models(model, result):
|
||||
if issubclass(model, models.Model) and model != models.Model:
|
||||
|
||||
Reference in New Issue
Block a user