私はDjango ModelAdminリストビューでget_queryset
を最適化しました:これらの最適化は、私はget_object
変更ビューのために必要であることと同じではありませんジャンゴModelAdminのGET_OBJECT最適化
.only('field1', 'field2',)
.select_related('rel1',)
:
.only('field1', 'field2', 'field3',)
.select_related('rel1__rel2', 'rel3',)
.prefetch_related(...)
シングは、get_queryset
and get_object
are coupledです:
class BaseModelAdmin(...):
...
def get_object(self, request, object_id, from_field=None):
"""
Returns an instance matching the field and value provided, the primary
key is used if no field is provided. Returns ``None`` if no match is
found or the object_id fails validation.
"""
queryset = self.get_queryset(request)
model = queryset.model
field = model._meta.pk if from_field is None else model._meta.get_field(from_field)
try:
object_id = field.to_python(object_id)
return queryset.get(**{field.name: object_id})
except (model.DoesNotExist, ValidationError, ValueError):
return None
どのように私は/上記のすべてのボイラープレートをコピー&ペーストすることなく、get_queryset
を上書きすることができますか?
まさにあなたがここで達成しようとしているものは不明である私は、このような何かをするだろう。問題にあなたの可能な解決策を列挙する代わりに、あなたが問題自体を述べた方がずっと良いでしょう。 'get_queryset'であなたの最適化は正確に何ですか? 'get_object'で適用したい最適化とは何ですか? –
@НазарТопольський質問を更新しました –