,我有以下的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