生成未创建的外键列表

2024-04-25 23:39:04 发布

您现在位置:Python中文网/ 问答频道 /正文

当我的模型结构如下时,如何将翻译为给定语言的项目:

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)

我需要一个有效的解决方案是将有数百万的记录。你知道吗

所以我基本上需要循环一个列表并添加缺少的翻译。你知道吗


Tags: name模型语言truemodelmodelsitem结构
2条回答

我认为没有真正有效的方法。至少没有你提供的信息。我会这样做的。你知道吗

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

How I can get the items that are NOT translated in a given language

items = Items.objects.filter(translation__language=lang_obj)

上面的查询将为您提供所有没有特定语言翻译的项lang_obj。现在,您可以循环这些项并添加缺少的翻译。你知道吗

相关问题 更多 >