Django 从其他模型过滤

SoW*_*oWa 2 django django-models django-queryset

例如我有两个模型:

class Symbol(models.Model):
    rowID = models.CharField(max_length=64, primary_key=true)

class SymbolProperties(models.Model):
    symbol = models.ForeignKey(Symbol, to_field='rowID', db_column='symbol')
    some_value = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

我想用字段过滤Symbol对象some_value,但模型符号与SymbolProperties没有关系。
我可以在不创建符号模型中的外键的情况下做到这一点吗?

Kev*_*nry 6

是的。当您声明一个ForeignKeyon one 模型时,反向关系将添加到另一个模型(请参阅文档)。

您可以将相关字段作为属性(symbol.symbolproperties_set或使用related_name模型字段定义中的关键字参数定义的任何名称)来访问,或在查找中引用它:

Symbol.objects.filter(symbolproperties__some_value=5)
Run Code Online (Sandbox Code Playgroud)

(添加distinct()以确保结果仅包含 的唯一实例Symbol。)