У меня есть модель 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'