如何在与 ContentType 相关的字段中使用 Django 自动完成功能?
How to use django autocomplete with field related to ContentType?
美好的一天,我正在使用 django-autocomplete-light 3.2.10 用于与 ContentType
模型相关的字段,在 django 中具有 ForeignKey
关系行政。我需要在其名称上过滤 ContentType
,但它实际上是一个 @property
。那么有没有办法做到这一点?
更新: 我实际上需要过滤 ContentType
模型的 verbose_name
而不是 name
.
我找到了一个答案,它有点难看但有效。
class TransactionAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
user = self.request.user
if user.is_authenticated() and user.is_staff:
if self.q:
models = apps.get_models()
result_list = []
for model in models:
if self.q in model._meta.verbose_name:
result_list.append(
ContentType.objects.get_for_model(model)
)
return result_list
else:
return ContentType.objects.all()
else:
return ContentType.objects.none()
美好的一天,我正在使用 django-autocomplete-light 3.2.10 用于与 ContentType
模型相关的字段,在 django 中具有 ForeignKey
关系行政。我需要在其名称上过滤 ContentType
,但它实际上是一个 @property
。那么有没有办法做到这一点?
更新: 我实际上需要过滤 ContentType
模型的 verbose_name
而不是 name
.
我找到了一个答案,它有点难看但有效。
class TransactionAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
user = self.request.user
if user.is_authenticated() and user.is_staff:
if self.q:
models = apps.get_models()
result_list = []
for model in models:
if self.q in model._meta.verbose_name:
result_list.append(
ContentType.objects.get_for_model(model)
)
return result_list
else:
return ContentType.objects.all()
else:
return ContentType.objects.none()