- 私のviews.pyに今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)
は、私がフィールドy.disp_nameとXX
内のすべての項目で、部分文字列一致をしたいです。
通常1はこれを行うだろう - M.objects.filter(disp_name__istartswith='string')
しかし、ここでM
はModel XX
でのForeignKeyです。だから私がしたらXX.objects.filter(y.disp_name__istartswith='string')
私はエラーが発生します。
はまた、これも失敗した - SyntaxError: keyword can't be an expression (<console>, line 1)
これを実行する方法 - 私が取得 u = User.objects.get(id=1) u.xx_set.filter(y.disp_name__istartswith='string')
例外があると言いますか?
申し訳ありませんが、会社のルール。ありがとう、それは問題を解決しました!だからdjangoは '__'のLHS部分を分割してフィールドとして使用しますか? –
はい、ほとんどの場合、ルックアップタイプ( 'in'、' istartswith'など)との結合を区別する必要があるため、当然もっと複雑です。興味があるなら 'django.db.models.sql.query.Query.add_filter'のコードを見てください。 –