a = models.ManyToManyField('self', through = 'x')
Как сделать запрос к фильтрации через «х»Django запрос с использованием модели через
a = models.ManyToManyField('self', through = 'x')
Как сделать запрос к фильтрации через «х»Django запрос с использованием модели через
Вам необходимо определить symmetrical=False
при создании поля. В Django 1.7
если вы пытаетесь ваше определение, вы получите ошибку похожее на это:
CommandError: System check identified some issues:
ERRORS:
myapp.MyModel.a: (fields.E332) Many-to-many fields with intermediate tables must not be symmetrical.
так изменить поле для
a = models.ManyToManyField('self', through = 'x', symmetrical = False)
Теперь все зависит от вашего x
класса. Он должен определить два ForeignKey поля обратно yourModel
:
class x(models.Model):
from_a = models.ForeignKey(myClass, related_name = 'from_a')
to_a = models.ForeignKey(myClass, related_name = 'to_a')
comment = models.CharField(max_length = 255)
Теперь вы не фильтровать от x
но из отмененных отношений, созданные с помощью FK, то есть что-то вроде этого:
myClass.objects.filter(from_a__comment='something')
или точки зрения экземпляра:
my_instance.a.filter(from_a__comments='something')
Большая статья об этой теме можно найти здесь: Self-referencing many-to-many through
Вы пробовали 'x__'? – Todor
Да, я сделал ... не могли бы вы рассказать мне полный запрос – harshatba
можете ли вы дать пример запроса? – levi