我的Django应用程序中有三个模型:
class MainData(models.Model):
# bunch of fields
class Label(models.Model):
label = models.CharField(max_length=512, null=True, unique=True)
class MapData(models.Model):
labelMatch = models.ForeignKey(Label, on_delete=models.CASCADE)
mainMatch = models.ForeignKey(MainData, on_delete=models.CASCADE)
通过我的应用程序,我让用户在搜索框中输入标签。我想做的是返回MainData
行中whos的MapData.label_match
字段是Label
中的条目。
例如,假设用户在搜索框中输入字符串“ main32”。我目前的想法是首先找到与“ main32”匹配的Label
行,然后使用RelatedManager
labelmatch_set
获取MapData
指向的所有MapData.mainMatch
行至。因此,如果有10条MapData行的labelMatch
指向带有Label
的{{1}}条目,那么我想检索外键{{1} }指向。
希望我已经解释了。我必须:
label='main32'
如何从MainData
检索指向mainMatch
的行?可以单线执行此操作吗?
答案 0 :(得分:1)
您可以先根据Label
关系来过滤MainData
,而不是先找到匹配的mapdata__labelMatch
:
matching_main_data_rows = MainData.objects.filter(mapdata__labelmatch__label__icontains=input)