【发布时间】:2020-05-27 14:38:05
【问题描述】:
我正在使用 django-modeltranslation 来翻译 DRF 中的 mo 模型
所以我做了所有说 django-modeltranslation 的文档,它适用于模型字段
但我无法获得选择字段的翻译值
from django.utils.translation import ugettext_lazy as _
class Product(models.Model):
PRODUCT_TYPES = (
('food', _('food')),
('wear', _('wear'))
)
name = models.CharField(verbose_name='Name', max_length=512, blank=True)
product_type = models.CharField('Type', choices=PRODUCT_TYPES, blank=True, null=True, max_length=16, default='food')
product_name 等字段由 django-modeltranslation 翻译并工作
但我总是在product_type 中得到food
我运行 makemessages 和 compilemessages
msgid "food"
msgstr "еда"
msgid "wear"
msgstr "одежда"
调用 get_product_type_display 无效
class ProductSerializer(serializers.ModelSerializer):
date = serializers.DateTimeField(read_only=True, format='%d.%m.%Y %H:%M')
product_type = serializers.SerializerMethodField()
class Meta:
model = Product
fields = ('phone_number', 'name', 'total_bonus', 'card_number', 'id', 'count', 'date', 'product_type',
'category')
def get_product_type(self, obj):
return obj.get_product_type_display()
【问题讨论】:
-
您之前是否创建和编译过翻译?
-
是的,我做了 makemessages 和 compilemessages
-
您需要在 Product 实例上调用 get_product_type_display()。 docs
-
@monio 为你更新我的问题
标签: django django-rest-framework translate choicefield