python - 通过 Django 中的粘合表获取数据
问题描述
我有这样的关系:
dictionary table
dictionary_child_char table
dictionary table (same as first table)
这是我的模型:
class Dictionary(models.Model):
traditional = models.CharField(max_length=50)
simplified = models.CharField(max_length=50)
pinyin_numbers = models.CharField(max_length=75)
pinyin_marks = models.CharField(max_length=75)
translation = models.TextField()
level = models.IntegerField()
frequency = models.IntegerField()
idiom = models.BooleanField()
child_char = models.ManyToManyField('Dictionary', through='DictionaryChildChar', null=True)
disabled = models.BooleanField()
simptradsame = models.BooleanField()
class Meta:
db_table = 'dictionary'
indexes = [
models.Index(fields=['simplified', ]),
models.Index(fields=['traditional', ]),
]
class DictionaryChildChar(models.Model):
class Meta:
db_table = 'dictionary_child_char'
from_dictionary = models.ForeignKey(Dictionary, on_delete=models.CASCADE, related_name="from_dictionary")
to_dictionary = models.ForeignKey(Dictionary, on_delete=models.CASCADE, related_name="to_dictionary")
word_order = models.IntegerField()
每个字典项与另一个字典项具有潜在的多对多关系(它是汉字,因此每个单词可能由几个组成字符组成)
我试图查看这些关系,并实际获取每个关系的字典条目:
dictionary = Dictionary.objects.filter(Q(simplified=char) | Q(traditional=char)).prefetch_related('child_char__to_dictionary')[:1]
item = dictionary[0]
item.to_dictionary.all().values()
但是,当我这样做时:
print(item.to_dictionary.all().values())
我明白了:
<QuerySet [{'id': 92661, 'from_dictionary_id': 37607, 'to_dictionary_id': 37589, 'word_order': 0}, {'id': 92662, 'from_dictionary_id': 37608, 'to_dictionary_id': 37589, 'word_order': 0}, {'id': 92663, 'from_dictionary_id': 37634, 'to_dictionary_id': 37589, 'word_order': 0}, {'id': 92664, 'from_dictionary_id': 37635, 'to_dictionary_id': 37589, 'word_order': 0}, {'id': 92665, 'from_dictionary_id': 58861, 'to_dictionary_id': 37589, 'word_order': 1}]>
如何,而不是 to_dictionary_id,我实际上得到与之关联的字典条目?
我是否需要做另一个相关的预取,或者?
解决方案
推荐阅读
- c# - 如何在 FCM 中使用 Web 请求订阅特定主题
- pandas - 使用 TopN 与考拉进行绘图有任何统计意义吗?
- sass - 即使有错误,Live sass 编译器也能成功编译
- laravel - 无法访问 Laravel 共享主机中的符号链接文件
- format - 在 discord.js [v12] 中打印制表符空间和超链接
- reactjs - 为什么 Material-UI 数据网格选择按钮不选择任何行
- java - Android java:SQLiteDatabase db = this.getWritableDatabase() 上的错误;
- reactjs - 我的代码直到重新渲染后才获取数据
- java - 使用 RestAssured 时收到 400 错误请求错误
- android - 如何将货币转换器添加到我的颤动到我的与 woocommerce 链接的电子商务应用程序