Django-admin:MoneyField不显示货币
问题描述:
我有一个模型Product
和模型Price
。 Price
具有ForeignKey(Product...)
和original_price
和eur_price
,它们是MoneyField
's(Django-money)。所以一个Product
对象可以有多个相关的Price
对象。Django-admin:MoneyField不显示货币
我试图将Price
对象内嵌到Product
模型管理员,它可以正常工作,但是当我将original_price和eur_price设置为readonly_fields
时,它显示金额而非货币。
这是没有让他们readonly
:
class PriceInline(admin.TabularInline):
model = Price
max_num = 10
#readonly_fields = ('original_price','eur_price')
class ProductAdmin(admin.ModelAdmin):
inlines = [ScanInline,]
这与只读:
class PriceInline(admin.TabularInline):
model = Price
max_num = 10
readonly_fields = ('original_price','eur_price')
class ProductAdmin(admin.ModelAdmin):
inlines = [ScanInline,]
你有任何想法如何显示货币有如果这些字段是只读?
答
是的,如果你在管理员中这样做,会发生这种情况。你可以尝试重写表单吗?
class PriceInline(admin.TabularInline):
model = Price
max_num = 10
def get_form(self, request, obj=None, **kwargs):
form = super(PriceInline, self).get_form(request, obj, **kwargs)
form.base_fields['original_price'].disabled = True
return form
答
为什么不能是这样的:
class PriceInline(admin.TabularInline):
model = Price
max_num = 10
readonly_fields = ('get_original_price','get_eur_price')
def get_original_price(self, obj):
return mark_safe('€{}'.format(obj.original_price))
def get_eur_price(self, obj):
return mark_safe('€{}'.format(obj.eur_price))