1

我有一个模型Product和模型Price。ThePrice有一个ForeignKey(Product...)andoriginal_priceeur_pricewhich 是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,]

在此处输入图像描述

这与只读:

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


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

在此处输入图像描述

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

4

2 回答 2

1

为什么不这样:

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))
于 2017-03-05T20:12:18.960 回答
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
于 2017-02-13T18:11:57.423 回答