По моему мнению, администратор django, похоже, молча терпит неудачу при обнаружении исключения в методе, который используется в качестве поля.
В вашем первом примере проблема, похоже, self.request
, так как экземпляр CarProductDataAdmin
не имеет атрибута request
. Таким образом, вместо того, чтобы вызывать исключение, никакое значение не возвращается в поле, что приводит к выводу «-».
Если вам нужен request
, вы должны получить его где-то и сохранить в своем ModelAdmin
для повторного использования. -использование. Возможно, переопределив метод get_form
ModelAdmin
class CarProductDataAdmin(admin.ModelAdmin):
# ....
def get_form(self, request, obj=None, change=False, **kwargs):
self.request = request
return super().get_form(request, obj, change, **kwargs)
Тогда вы сможете использовать метод car_name
, как указано в вашем коде.