Получить список уникальных записей «многие ко многим» из набора запросов - PullRequest
8 голосов
/ 09 июня 2010

Мои модели:

class Order(models.Model):
    ordered_by = models.ForeignKey(User)
    reasons = models.ManyToManyField(Reason)
class Reason(models.Model):
    description = models.CharField()

Обычно пользователь создает заказ и указывает причины этого заказа. то есть, у Джона есть два заказа (один на карандаши, потому что он отсутствует И потому, что ему не нравятся его текущие акции. Второй заказ на ручки, потому что он отсутствует).

Я хочу напечатать список всех причин, по которым пользователь разместил свои заказы. Таким образом, при Джоне, он должен напечатать «он отсутствует», «ему не нравится его текущая акция»; только эти две строки. Если я просто выберу все заказы Джона, переберу их и выведу их «причины», он напечатает «он отсутствует», «ему не нравится его текущий запас», а затем снова «он отсутствует». Я не хочу эти повторяющиеся значения.

Как мне выбрать список его причин для ВСЕХ его заказов, чтобы в списке были все уникальные строки?

1 Ответ

12 голосов
/ 09 июня 2010
Reason.objects.filter(order__ordered_by=john).distinct()
...