我有一个名为 String 的模型,它看起来像这样:
class String(models.Model):
text = models.TextField()
language = models.ForeignKey(Language, default=get_english)
original_string = models.ForeignKey('self', null=True, blank=True)
字符串的默认语言是英文,然后,在数据库的同一张表中,我有不同语言的翻译字符串,每个都指向对应的英文字符串original_string
。
我需要的是检索没有与另一种语言相关的字符串的英文字符串,即没有翻译的字符串。
现在我正在遍历所有英文字符串并将我需要的字符串附加到列表中,例如:
translatable_strings = String.objects.filter(language__name="English")
strings = []
for string in translatable_strings:
if not String.objects.filter(language=translator_lang,
original_string=string).exists():
strings.append(string)
但我认为这是一段非常讨厌的代码。有没有办法在一个查询中做到这一点?