Задать вопрос

Django фильтрация ForeignKey

Добрый день!

models.py

class Delivery(models.Model):
    created_on = models.DateTimeField(u"Дата создания", auto_now_add=True)
    datedelivery = models.DateField(u"Дата отгрузки")
    dateofperformance = models.DateTimeField(u"Дата исполнения")
    partner = models.ForeignKey(Partner, verbose_name=u"Контрагент")

КОНТРАГЕНТЫ:
class Partner(models.Model):
    name = models.CharField(max_length=100)
    created_on = models.DateTimeField(auto_now_add=True)


НЕОБХОДИМО СДЕЛАТЬ ФИЛЬТР: Delivery - > Partner in - Delivery:

forms.py
class DeliveryForm(forms.ModelForm):
    partner = forms.ModelChoiceField(label='Контрагент', queryset=Delivery.objects.all())


Выдает список контрагентов которые были использованы в Delivery, но они задваиваются, контрагенты не уникальные... типа

Контрагента1
Контрагента1
Контрагента2
Контрагента1
Контрагента3
Контрагента4
Контрагента2
Контрагента5


forms.py
class DeliveryForm(forms.ModelForm):
    partner = forms.ModelChoiceField(queryset=Delivery.objects.filter().values_list('partner', flat=True).order_by('partner').distinct())


Результат: Выдает всех Уникальных контрагентов в Delivery, но только их id, поля name нет.

На посоветовали передавайть в конструктор формы дополнительный параметр, в вашем случае ID партнёра и по нему фильтруйте. Как сделать, не знаю.

Есть варианты?
Спасибо!
  • Вопрос задан
  • 3649 просмотров
Подписаться 4 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
yttrium
@yttrium
Контрагенты уникальные только должно быть не "queryset=Delivery.objects.all()" а "queryset=Partner.objects.all()"

Но честно признаться вторая forms.py аля франкенштейн наталкивает на мысль что нужно както договориться о том что такое "НЕОБХОДИМО СДЕЛАТЬ ФИЛЬТР"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы