Aşağıdaki Django Model var - Django Modelleri Yabancı Anahtar Saha Maç
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)
Şimdi benim views.py içinde, ben saha y.disp_name ile
XX
içindeki tüm öğeleri kısmi dize maç yapmak istiyorum.
Normalde kimse bu yapacağını - M.objects.filter(disp_name__istartswith='string')
Ama burada M
Model XX
bir ForeignKey olduğunu. Yani XX.objects.filter(y.disp_name__istartswith='string')
yaparsam bir hata alıyorum. Ayrıca
SyntaxError: keyword can't be an expression (<console>, line 1)
Bu nasıl yapmak için - Ben diyor olsun u = User.objects.get(id=1) u.xx_set.filter(y.disp_name__istartswith='string')
İstisna?
Üzgünüz, şirket kuralları. Teşekkürler, bu sorunu çözdü! Django, '__' deki LHS bölümünü böler ve onu alanlar olarak kullanır? –
Evet, oldukça fazla olsa da, doğal olarak, bu türden birleştirme türünden ('in', 'istartswith', vb.) Gelenleri ayırma gereği nedeniyle daha karmaşıktır. İlgilendiğinizde, 'django.db.models.sql.query.Query.add_filter' koduna bakın. –