【发布时间】:2020-10-05 14:21:58
【问题描述】:
我正在尝试过滤 Django 表单中的 ManyToMany 字段,以便它只包含与登录用户(父母和孩子)关联的当前用户登录用户的选择
forms.py
class LessonsForm(forms.ModelForm):
class Meta:
model = models.Lessons
fields = ['type_of_lesson','attendees','max_capacity','teacher','date_of_lesson','time_of_lesson']
class LessonAddForm(forms.ModelForm):
def __init__(self, user, *args, **kwargs):
super(LessonAddForm, self).__init__(*args, **kwargs)
self.fields['attendees'].queryset = CustomUser.objects.filter(username=user)
class Meta:
model = models.Lessons
fields = ['attendees']
模型.py
class CustomUser(AbstractUser):
date_of_birth = models.DateField()
is_parent = models.BooleanField(verbose_name="Parent")
children = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True)
REQUIRED_FIELDS = ['date_of_birth', 'is_parent','email',]
class Lessons(models.Model):
type_of_lesson = models.CharField("Lesson Type", max_length=128)
attendees = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name="attendee_users")
max_capacity = models.IntegerField()
teacher = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,related_name="teaching_user",limit_choices_to={'is_staff': True})
date_of_lesson = models.DateField()
time_of_lesson = models.TimeField()
date_added = models.DateField(auto_now_add = True)
下面的行是我苦苦挣扎的地方,这会带回当前用户,但我也试图让“孩子”连接到用户也出现在与会者的选择中。
self.fields['attendees'].queryset = CustomUser.objects.filter(username=user)
我尝试了一些方法,下面是一个示例,但我似乎无法弄清楚如何组合两个过滤器
self.fields['attendees'].queryset = CustomUser.objects.filter(username=user,user.children)
【问题讨论】:
标签: django django-forms