django 查询具有外键的模型,检查该外键的 属性
django query a model that has a foreign key, checking a property of that foreign key
假设我有两个模型, model_0 和 model_1
model_0 定义如下
def model_0:
...
foreign_key = models.ForeignKey(model_1)
...
和model_1
def model_1:
...
random_property = models.Charfield()
...
model_1 是 model_0[= 中的外键(可以是 manytomany 或其他) 15=]
如何在 model_1 对象中执行查询检查 model_0[= 的 属性 38=]
类似于model_0.objects.filter(model_0.random_property="Something")
我知道您可以使用 model_0.objectsl.filter(model_0="Instance of model 0")
这样的模型轻松执行查询,但我还没有看到任何方法来检查该对象的特定 属性
您“查看”了带有双下划线的关系 (__
),因此您可以使用以下内容进行过滤:
model_0.objects.filter(<b>foreign_key__random_property='Something'</b>)
这将生成如下所示的查询:
SELECT model_0.*
FROM model_0
<b>LEFT OUTER JOIN model_1 ON model_1.id = model_0.foreign_key_id</b>
WHERE model_1.random_property = 'Something'
在你的情况下,它是由双下划线完成的,它看起来像这样 model_0.objects.filter(model_1__random_property="Something")
尝试阅读 Django 文档 here。他们真的很有帮助。
假设我有两个模型, model_0 和 model_1
model_0 定义如下
def model_0:
...
foreign_key = models.ForeignKey(model_1)
...
和model_1
def model_1:
...
random_property = models.Charfield()
...
model_1 是 model_0[= 中的外键(可以是 manytomany 或其他) 15=]
如何在 model_1 对象中执行查询检查 model_0[= 的 属性 38=]
类似于model_0.objects.filter(model_0.random_property="Something")
我知道您可以使用 model_0.objectsl.filter(model_0="Instance of model 0")
这样的模型轻松执行查询,但我还没有看到任何方法来检查该对象的特定 属性
您“查看”了带有双下划线的关系 (__
),因此您可以使用以下内容进行过滤:
model_0.objects.filter(<b>foreign_key__random_property='Something'</b>)
这将生成如下所示的查询:
SELECT model_0.*
FROM model_0
<b>LEFT OUTER JOIN model_1 ON model_1.id = model_0.foreign_key_id</b>
WHERE model_1.random_property = 'Something'
在你的情况下,它是由双下划线完成的,它看起来像这样 model_0.objects.filter(model_1__random_property="Something")
尝试阅读 Django 文档 here。他们真的很有帮助。