为什么当我从方法car_name
调用模型实例时,该方法在Django admin中返回-
@admin.register(Invoice)
class CarProductDataAdmin(admin.ModelAdmin):
form = CarProductDataAdminForm
def car_name(self, obj):
# Call this instance
car = Customer.objects.get(product__customer_id=self.request.user.person.id)
return "car.name" # return string
readonly_fields = ('car_name', )
但当我返回字符串时,它是工作
@admin.register(Invoice)
class CarProductDataAdmin(admin.ModelAdmin):
form = CarProductDataAdminForm
def car_name(self, obj):
# Doesn`t Call this instance
# return string
return "name"
readonly_fields = ('car_name', )
代码中第一个值得注意的问题是,返回的不是对象属性值,而是字符串:
应该是:
或者,根据您使用的python版本:
下一个问题是,在模型管理器上调用
get
应该会导致DoesNotExists异常,但在某些情况下,它可能会被抑制,因此我建议将代码修改为:看看这是你想要的还是“没有”
根据我的判断,django管理员在方法(用作字段)中遇到异常时似乎会无声地失败
在第一个示例中,问题似乎是
self.request
,因为CarProductDataAdmin
实例没有request
属性。因此,不会引发异常,而是不会向字段返回任何值,从而导致输出“-”如果您需要
request
,您必须从某处获取它,并将其保存在ModelAdmin
中以供重复使用。可能通过覆盖ModelAdmin的get_form
方法然后您应该能够使用代码中发布的
car_name
方法相关问题 更多 >
编程相关推荐