2016-12-01 5 views
1

У меня есть простое приложение с:Джанго Hvad и ForeignKey

class NamedModel(TranslatableModel): 
    code = models.CharField(max_length=120) 

    translations = TranslatedFields(
     name=models.CharField(max_length=256), 
     description=models.TextField() 
    ) 

    class Meta: 
     abstract = True 


class Product(NamedModel): 
    translations = TranslatedFields() 


class Report(TranslatableModel): 
    quantity = models.DecimalField(max_digits=20, decimal_places=6) 
    inv = models.ForeignKey(Inv) 
    translations = TranslatedFields(
     product=models.ForeignKey(Product) 
    ) 

А затем, из оболочки я создать несколько экземпляров:

product = Product.objects.language('en').create(name='asd', description='asd', code='asd') 

inv = Inv.objects.create(code='xxx') 

report = Report.objects.language('en').create(quantity=1, inv=inv, product=product) 

И если я типа: Len (Report.objects.language ('ан') все()), я получаю 1, но когда я пытаюсь это:.

Report.objects.language('en').all() 

я получаю:

NoTranslationError: Accessing a translated field requires that the instance has a translation loaded, or a valid translation in current language (None) loadable from the database 

У вас есть совет?

ответ

0

Необходимо установить активный язык для текущего сеанса явно. См. Документацию по Django "Explicitly setting the active language"

from django.utils import translation 

user_language = 'en' 
translation.activate(user_language) 
Смежные вопросы