Недавно я работал в общей системе надписей, чтобы помочь студентам зарегистрироваться в классе или лаборатории.Но у меня есть проблемы с логикой ManyToManyField в классе Lab.
from django.db import models
from django.contrib.auth.models import User
class Day(models.Model):
name = models.CharField(max_length=20, primary_key=True)
def __unicode__(self):
return u"%s" % self.name
class LabName(models.Model):
lab_name = models.CharField(max_length=50, primary_key=True)
class Meta:
verbose_name_plural = 'LabNames'
def __unicode__(self):
return u'%s' % self.lab_name
class Lab(models.Model):
name = models.ForeignKey(LabName)
start_hour = models.TimeField()
length = models.IntegerField(help_text="Given in minutes")
classDays = models.ManyToManyField(Day)
start_date = models.DateField()
finish_date = models.DateField()
max_cap = models.SmallIntegerField(help_text="Maximun number of students")
teacher = models.ForeignKey(User, related_name="Teachers")
students = models.ManyToManyField(User)
class Meta:
verbose_name_plural = 'Labs'
def __unicode__(self):
return u"%s %s" % (self.id, self.name)
Я бы предпочел связать определенную группу (django.contrib.auth.models.Group
) под названием «Студенты», а не всех пользователей или, по крайней мере, отфильтровать и/ или подтвердите это поле, чтобы просто добавить и просмотреть учащихся, а также сделать то же самое с полем учителя.
Обновление 1: Я только что заметил, что, возможно, я мог бы отфильтровать тех пользователей, которые находятся вопределенная группа, использующая необязательный параметр limit_choices_to
.
Вопрос: как я могу использовать параметр limit_choices_to
, чтобы отображать только тех пользователей, которые входят в группу «Студенты» или «Учителя»?
![enter image description here](https://i.stack.imgur.com/XjZXd.png)