Границы и ограничения в значениях полей Django ForeignKey - и как они могут повлиять на результаты набора запросов - PullRequest
0 голосов
/ 05 июля 2011

Например, если у меня есть models.py, например:

Handler(models.Model):
    model1 = ForeignKey(Model1)
    model2 = ForeigKey(Model2)
    user = models.ForeignKey(User)

Например, есть 100 экземпляров обработчика с идентификатором модели 1 = 1, но идентификатор модели 2 для этих 100 экземпляров находится в диапазоне от 1 до5. И когда я делаю что-то вроде этого:

Handles.objects.filter(model1=1).values_list('model2_id', flat=True)

Возвращает список из 5 значений идентификатора или список из 100 значений идентификатора, которые повторяются?И если он возвращает 100 значений, есть ли возможность оставить только одно значение для каждого повторного значения?

1 Ответ

1 голос
/ 05 июля 2011

Будет возвращен список из 100 значений идентификатора.Если вы хотите получить 5 уникальных, вы можете сделать это в python.

model2_id_uniq_values = list(set(Handles.objects.filter(model1=1).values_list('model2_id', flat=True)))

Возможно, это не самый точно настроенный алгоритм, и при использовании набора вы потеряете порядок.Но для ваших целей это работает.

...