9

ええ、それで、モデルの翻訳された選択肢を保存したいのですが、Django はこれについて私に同意しません。Django のバージョンは 1.3 で、モデルと選択肢は次のようになります。

from django.db import models
from django.utils.safestring import mark_safe          
from django.utils.translation import ugettext_lazy as _

RATE_CHOICES = (
    ('', _('Choose service rate')),
    ('5cpm_EUR', mark_safe(string_concat('€ 0,05 ', _('per minute')))),
    ('1cpm_EUR', mark_safe(string_concat('€ 0,01 ', _('per minute')))),
)

class Product(models.Model):
    service_rate = models.CharField(_('service rate'), max_length=10, blank=True, choices=RATE_CHOICES)

また、選択肢は次のようにモデルフォームで使用されます(別のモデルの場合、フィールドを再宣言する必要がありました)。

service_rate = forms.ChoiceField(choices=RATE_CHOICES, widget=forms.Select(attrs={'class': 'chzn-select rate-select'}), required=False)

問題は、私が何をしようとしてもです。django docs の内容に従う、mark_safe と翻訳の順序を逆にする、遅延翻訳を使用しないなど。常に、mark_safe の動作または翻訳の動作のいずれかに帰着します。しかし、決して両方...

2 つの機能を適切に組み合わせるにはどうすればよいですか?

4

1 に答える 1

9

追加:

from django.utils import six  # Python 3 compatibility
from django.utils.functional import lazy
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _

mark_safe_lazy = lazy(mark_safe, six.text_type)

その後:

mark_safe_lazy(string_concat('€ 0,05 ', _('per minute')))

これは Django 1.4 docsに追加されました。

于 2013-02-22T21:24:53.237 に答える