Django-admin:MoneyField不显示货币

Django-admin:MoneyField不显示货币

问题描述:

我有一个模型Product和模型PricePrice具有ForeignKey(Product...)original_priceeur_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,] 

enter image description here

这与只读:

class PriceInline(admin.TabularInline): 
    model = Price 
    max_num = 10 
    readonly_fields = ('original_price','eur_price') 


class ProductAdmin(admin.ModelAdmin): 
    inlines = [ScanInline,] 

enter image description here

你有任何想法如何显示货币有如果这些字段是只读?

是的,如果你在管理员中这样做,会发生这种情况。你可以尝试重写表单吗?

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))