2013-02-22 65 views
6

हाँ, इसलिए, मैं अपने मॉडल के लिए अनुवादित विकल्पों को संग्रहीत करना चाहता हूं, लेकिन Django इस पर मुझसे असहमत है। Django के संस्करण 1.3 और मॉडल और विकल्प कुछ इस तरह दिखाई: तो जैसे (तो मैं क्षेत्र redeclare पड़ा एक और मॉडल के लिए)Django: मॉडल विकल्पों में मार्क सुरक्षित के साथ आलसी अनुवाद को गठबंधन करें

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) 

इसके अलावा, विकल्प एक modelform में किया जाता है:

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

समस्या यह है कि कोई फर्क नहीं पड़ता कि मैं क्या प्रयास करता हूं; django दस्तावेज़ों पर सामानों का पालन करते हुए, मार्क_साफ और अनुवाद का क्रम क्रमशः कोई आलसी अनुवाद आदि का उपयोग नहीं करते हैं। यह हमेशा मार्क_साफ काम या अनुवाद काम करने के लिए नीचे आता है। लेकिन दोनों कभी नहीं ...

मैं दो कार्यों को सही तरीके से कैसे जोड़ूं?

उत्तर

7

जोड़ें:

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 को जोड़ा गया है।

+0

django 1.3 चल रहा है, और हालांकि मैंने इसे आजमाया है, मैं इसे काम करने के लिए नहीं मिला। –