Django-admin:MoneyField不显示货币

时间:2017-02-13 14:47:17

标签: python django django-admin django-1.10

我有一个模型Product和模型PricePrice有一个ForeignKey(Product...)original_price以及eur_price MoneyField' s(Django-money)。因此,一个Product对象可以包含多个Price个对象。

我尝试将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

这与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

如果这些字段是只读的,你知道如何在那里显示货币吗?

2 个答案:

答案 0 :(得分:0)

如果您在管理员中执行此操作,则会发生这种情况。您可以尝试覆盖表单吗?

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

答案 1 :(得分:0)

为什么不这样:

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