0
添加的過濾條件,我有兩個示範類和通過類如:Django的模型如何通過模型字段
class Terms(models.Model):
name = models.CharField(max_length=64)
posts = models.ManyToManyField("Post", through="TermRelation")
class Post(models.Model):
title = models.CharField(max_length=120)
content = models.TextField()
published_on = models.DateTimeField(auto_now_add=True)
# Categories and Tags
terms = models.ManyToManyField("Term", through="TermRelation")
class TermRelation(models.Model):
class Meta:
db_table = "tbl_term_relation"
unique_together = (
("term", "term_type", "post"),
)
CITES = (
('CAT', 'Category'),
('TAG', 'Tag'),
)
term = models.ForeignKey(Term, db_column="id_term")
post = models.ForeignKey(Post, db_column="id_post")
term_type = models.CharField('Term Type', max_length=3,
default=CITES[0][0], choices=CITES)
在這裏,我想只選擇那些類型的帖子是在Java
範疇。
所以,我做的這樣,但是這引發異常:
Post.objects.filter(terms__name='Java', termrelation_set__term_type='CAT')
作爲SQL期待:
SELECT ... FROM Post p
LEFT OUTER JOIN TermRelation r ON p.id = r.id_post
LEFT OUTER JOIN Term t ON t.id = r.id_term
WHERE r.term_type = 'CAT'
AND t.name = 'Java';
請幫幫我,我該怎麼辦?
相反termrelation_set__term_type'的','嘗試termrelation__term_type' –
@Bibhas感謝,'termrelation__term_type'工作。非常感謝 – vinaykrsharma