,我有以下的Django模型 -Django模型外键字段匹配
class M(models.Model):
...
disp_name = models.CharField(max_length=256, db_index=True)
...
class XX(models.Model):
x = models.ForeignKey(User)
y = models.ForeignKey(M, unique=True)
现在在我的views.py,我想要做的所有项目的部分字符串匹配在XX
与现场y.disp_name。
通常人会做到这一点 - M.objects.filter(disp_name__istartswith='string')
但这里M
是Model XX
一个ForeignKey。所以如果我做XX.objects.filter(y.disp_name__istartswith='string')
我得到一个错误。
此外,这也失败了 - u = User.objects.get(id=1) u.xx_set.filter(y.disp_name__istartswith='string')
例外,我得到说的是 - SyntaxError: keyword can't be an expression (<console>, line 1)
如何做到这一点?
对不起,公司规则。谢谢,这解决了问题!所以Django在'__'上拆分LHS部分并将其用作字段? – 2010-11-22 10:50:36
是的,虽然很自然,但由于需要将查询类型('in','istartswith'等)与连接区分开来,所以它更复杂。如果您有兴趣,请参阅'django.db.models.sql.query.Query.add_filter'中的代码。 – 2010-11-22 11:41:31