次のような 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)
しかし、それはかなり厄介なコードだと思います。これを単一のクエリで作成する方法はありませんか?