当我的模型结构如下时,如何获取以给定语言翻译的 NOT 项目:
class Language(models.Model):
name = models.CharField(max_length=20, unique=True)
code = models.CharField(max_length=5, unique=True)
class Item(models.Model):
id = ...
class Translation(models.Model):
name = models.CharField(max_length=100)
language = models.ForeignKey('languages.Language')
item = models.ForeignKey(Item)
我需要一个有效的解决方案,会有数百万条记录。
所以我基本上需要遍历一个列表并添加缺少的翻译。
答案 0 :(得分:0)
我认为没有一种非常有效的方法。至少没有您提供的信息。我会这样做。
from itertools import product
existing_translatinos = {'_'.join((t.item_id + t.language_id)) for t in Translation.objects.all()}
for i, l in product(Item.objects.all(), Language.objects.all()):
if '_'.join((i.id, l.id)) not in existing_translations:
Translation.objects.create(...)
答案 1 :(得分:0)
如何获取以给定语言翻译的 NOT 项目
items = Items.objects.filter(translation__language=lang_obj)
以上查询将为您提供所有没有特定语言lang_obj
翻译的项目。现在,您可以遍历这些项目并添加缺少的翻译。