Django.core.exceptions.FieldError: Невозможно преобразовать ключевое слово в поле
#################################### У меня есть следующий код: #####################################
class AppExpandAbstract(BaseModel):
class Meta:
abstract = True
foreign_key = App
target = models.ForeignKey(
App,
blank=True,
default=None,
on_delete=models.PROTECT,
related_name="%(app_label)s_%(class)s",
related_query_name="%(app_label)s_%(class)s",
)
app_label = "com_longgui_app_proxy_nginx"
class LongguiAppProxyNginxAppConfig(AppConfig):
name = app_label
class NginxAPP(AppExpandAbstract):
class Meta:
app_label = app_label
is_intranet_url = models.CharField(verbose_name=_('Is Intranet URL', '是否内网地址'), max_length=128)
class ExpandManager(models.Manager):
""" Enables changing the default queryset function. """
def get_queryset(self, filters:dict={}):
table_name = self.model._meta.db_table
field_expands = field_expand_map.get(table_name,{})
queryset = self.model.objects.all()
annotate_params = {}
related_names = []
# values = []
# for field in self.model._meta.fields:
# if field.name == 'password':
# continue
# values.append(field.name)
for table, field,extension_name,extension_model_cls,extension_table,extension_field in field_expands:
related_name = extension_name+'_'+extension_model_cls._meta.object_name
related_names.append(extension_table)
annotate_params[field] = F(extension_table+'__'+extension_field)
# values.append(field)
# return queryset.annotate(**annotate_params).select_related(*related_names).values(*values)
queryset = queryset.annotate(**annotate_params).select_related(*related_names)
print(queryset.query)
return queryset.values()
######################################## когда код выполняется здесь, происходит что-то неправильное! #########################################
apps = App.expand_objects.filter(
tenant_id=tenant_id,
is_active=True,
is_del=False
)
######################################## журнал ошибок #########################################
Traceback (most recent call last):
File "/home/fanhe/workspace/arkid-v2.5/.venv/lib/python3.8/site-packages/ninja/operation.py", line 99, in run
result = self.view_func(request, **values)
File "/home/fanhe/workspace/arkid-v2.5/arkid/core/api.py", line 143, in func
response = old_view_func(request=request, *params, **kwargs)
File "/home/fanhe/workspace/arkid-v2.5/.venv/lib/python3.8/site-packages/ninja/pagination.py", line 141, in view_with_pagination
items = func(*args, **kwargs)
File "/home/fanhe/workspace/arkid-v2.5/api/v1/views/app.py", line 33, in list_apps
apps = App.expand_objects.filter(
File "/home/fanhe/workspace/arkid-v2.5/.venv/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/fanhe/workspace/arkid-v2.5/arkid/core/expand.py", line 64, in get_queryset
queryset = queryset.annotate(**annotate_params).select_related(*related_names)
File "/home/fanhe/workspace/arkid-v2.5/.venv/lib/python3.8/site-packages/django/db/models/query.py", line 1091, in annotate
return self._annotate(args, kwargs, select=True)
File "/home/fanhe/workspace/arkid-v2.5/.venv/lib/python3.8/site-packages/django/db/models/query.py", line 1130, in _annotate
clone.query.add_annotation(
File "/home/fanhe/workspace/arkid-v2.5/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1062, in add_annotation
annotation = annotation.resolve_expression(self, allow_joins=True, reuse=None,
File "/home/fanhe/workspace/arkid-v2.5/.venv/lib/python3.8/site-packages/django/db/models/expressions.py", line 578, in resolve_expression
return query.resolve_ref(self.name, allow_joins, reuse, summarize)
File "/home/fanhe/workspace/arkid-v2.5/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1779, in resolve_ref
join_info = self.setup_joins(field_list, self.get_meta(), self.get_initial_alias(), can_reuse=reuse)
File "/home/fanhe/workspace/arkid-v2.5/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1648, in setup_joins
path, final_field, targets, rest = self.names_to_path(
File "/home/fanhe/workspace/arkid-v2.5/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1562, in names_to_path
raise FieldError("Cannot resolve keyword '%s' into field. "
django.core.exceptions.FieldError: Cannot resolve keyword 'com_longgui_app_proxy_nginx_nginxapp' into field. Choices are: app, config, config_id, created, description, entry_permission, entry_permission_id, id, is_active, is_del, logo, name, package, permission, secret, tenant, tenant_id, type, updated, url, userpermissionresult
Может ли кто-нибудь помочь мне?