Я создаю приложение словаря, используя Django. Основными моделями в этом приложении являются Expression
с, Definition
с и City
с. Логика c заключается в том, что каждый Expression
имеет один или несколько Definition
с, а каждый Definition
связан с одним City
.
Вот моя проблема : Я хочу запросить все City
, связанные с Expression
, с уровня Expression
.
Например, я хотел бы сделать an_expression.cities
и получить все City
связанные с (каждый Definition
из) an_expression
.
Вот мои модели :
class City(models.Model):
city = models.CharField()
class Expression(models.Model):
expression = models.CharField()
cities = models.ManyToManyField(City, related_name="expressions")
class Definition(models.Model):
city = models.ForeignKey(City, related_name="definitions")
expression = models.ForeignKey(Expression, related_name="definitions")
Этот код теперь работает. Однако каждый раз, когда я добавляю Definition
, мне нужно добавить City
к обоим Expression
--AND-- * Definition
.
Вот мой вопрос : есть ли способ только добавить City
к Definition
, а затем каким-то образом иметь возможность запросить an_expression.cities
и получить все города (в основном избавиться от поля cities
в модели Expression
?