【问题标题】:Django HVAD and ForeignKeyDjango HVAD 和 ForeignKey
【发布时间】:2016-12-01 20:19:58
【问题描述】:

我有一个简单的应用程序:

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)
    )

然后,我从 shell 创建了一些实例:

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('en').all()),我得到 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

你有什么建议吗?

【问题讨论】:

    标签: django django-hvad


    【解决方案1】:

    您需要为当前会话明确设置活动语言。 参见 Django 文档"Explicitly setting the active language"

    from django.utils import translation
    
    user_language = 'en'
    translation.activate(user_language)
    

    【讨论】:

      猜你喜欢
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 2012-09-29
      相关资源
      最近更新 更多