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