django选择带有内部表过滤器的数据

时间:2016-07-07 14:15:46

标签: mysql django

我将通过内表上的过滤器选择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:无法将关键字'order'解析为字段...

有什么问题?

THX 弗兰克

1 个答案:

答案 0 :(得分:0)

你应该做

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

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

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