Django как отфильтровать поле ManyToMany - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь создать форму с отфильтрованным полем «многие ко многим». поэтому я создал объекты:

имя дня

1) имя = воскресенье

2) имя = понедельник

Submain

1) name: Math

days (поле ManytoMany): воскресенье понедельник

2) name: Sport

days (поле ManytoMany) : Вторник

3) имя: танец

дней (поле ManytoMany): воскресенье вторник

день

1) имя ( Char field) = "Sunday"

hog1 (поле ManytoMany, filterd): покажет мне только Dance и Math для выбора.

how Могу ли я отфильтровать это поле hog1 manytomany в form.py? я должен изменить модель имени дня на forginkey дня? спасибо за любую помощь.

У меня есть 3 модели:

Models.py

class Dayname(models.Model):
 name = models.CharField(verbose_name="day", max_length=200, null=True)
 def __str__(self):
    return self.name


class Submain(models.Model):

  name = models.CharField(verbose_name="שם החוג", max_length=200, null=True)
 days = models.ManyToManyField(Dayname, verbose_name="ימי פעילות", 
 related_name="active", max_length=200, null=True,
                              )

def __str__(self):
    return self.name




class Day(models.Model):
  name = models.CharField(verbose_name="יום", max_length=200, null=True)
  hog2 = models.ManyToManyField(Submain, verbose_name="חוג 2 ביום", 
     related_name="hog2", max_length=200, null=True,
                              )

  def __str__(self):
    return self.name

forms.py

class DaysForm(ModelForm):

def __init__(self, *args, **kwargs):
    super(DaysForm, self).__init__(*args, **kwargs)
    self.fields['hog1'].required = False
    self.fields["hog1"].widget = CheckboxSelectMultiple()
    self.field['hog1'].queryset = Submain.objects.filter(days__in__name="sunday")

1 Ответ

1 голос
/ 04 мая 2020
self.fields['hog1'].queryset = Submain.objects.filter(days__in=['id of dayname'])

И, возможно, вы захотите добавить .distinct ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...