Я использую набор фильтров Django на 2 полях.Необходимо отображать различные значения во втором поле и, если возможно, только зависимые значения - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть модель Session, которая имеет атрибуты subject и module, которые представляют собой FK для 2 разных таблиц.Таблица модуля имеет тему и тему в виде 2 столбцов.Я пишу фильтр по теме и теме.В идеале я хочу ограничиться «темами», относящимися к теме и без дубликатов.Я новичок в Django и Python.

class SessionFilter(django_filters.FilterSet):
     module = django_filters.ModelChoiceFilter(label="Topic", queryset=Module.objects.all().only('topic').distinct())
     class Meta:
        model = Session
        fields = ['subject', 'module', ]    

Models.py

class Module(models.Model):
  STATUS_TYPES = (
        ('Active', 'Active'),
        ('Inactive', 'Inactive'),
  )
  topic   = models.CharField(max_length = 200)  
  teacher_name  = models.CharField(max_length = 100)
  status  =  models.CharField(max_length=30, default='Active', choices=STATUS_TYPES)
  subject = models.ForeignKey(Subject, on_delete=models.CASCADE)  
  created_dt = models.DateTimeField(default=datetime.now) 

  def __str__(self):
    return self.topic 

  class Meta:
        db_table = 'modules'         

class Session(models.Model):
   grade_level  = models.CharField(max_length = 30)
   num_students = models.IntegerField(default=0)
   session_dt = models.DateTimeField(default=datetime.now)
   subject = models.ForeignKey(Subject, on_delete=models.CASCADE)  
   module = models.ForeignKey(Module, on_delete=models.CASCADE)
   school = models.ForeignKey(School, on_delete=models.CASCADE)

   def __str__(self):
     return self.school.school_name + ' on ' + self.session_dt

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