【问题标题】:django select data with filter over a inner tabledjango 在内部表上使用过滤器选择数据
【发布时间】:2016-11-09 21:51:15
【问题描述】:

我将选择 2 个连接表中的数据,并在内部表上使用过滤器

这是我的模型:

class tbl1(models.Model):
    id1 = models.AutoField(db_column='id1', primary_key=True)
    id2 = models.ForeignKey(tbl2, models.PROTECT, db_column='id2', blank=True, null=True)
    val = models.CharField(max_length=30, blank=True, null=False)
    ...

class tbl2(models.Model):
    id2 = models.AutoField(db_column='id2', primary_key=True)
    order = models.CharField(max_length=30, blank=True, null=False)
    ....

我需要这个 SQL 语句:

select id1, val
from tbl1
inner join tbl2 on tbl1.id2=tbl2.id2
WHERE order='xyz'

我试试:

obj = tbl1.objects.select_related('id2').filter(order='xyz')

我收到了这个错误:

FieldError:无法将关键字“订单”解析为字段...

怎么了?

谢谢 弗兰克

【问题讨论】:

    标签: mysql django


    【解决方案1】:

    你应该这样做

    obj = tbl1.objects.select_related('id2').filter(id2__order='xyz')
    #                                         ------^
    

    relationshipfield__modelfield 是 django 中过滤与模型有关系的模型的约定。

    应该在教程或参考文档中找到。

    【讨论】:

    • 谢谢,它有效。我对“查询集及其周围的一切”感到非常困惑。我擅长 sql(也是复杂的 sql 语句),但是要在“查询集语言”中重建它非常困难 ;-)
    猜你喜欢
    • 1970-01-01
    • 2016-10-10
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2022-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多