如何在与 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()