【发布时间】:2021-10-16 12:21:04
【问题描述】:
我正在尝试查询,以便每个模型实例中的字段值都不会重复显示。所有这些都发生在表单中:
class OrganisorClassStatusUpdateForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(OrganisorClassStatusUpdateForm, self).__init__(*args, **kwargs)
self.fields['off_day_student'] = forms.ModelChoiceField(
queryset= Class.objects.filter(teacher=self.instance.teacher).filter(is_new_set=True).filter(time=self.instance.time).order_by('-date')[:10]
)
这里,self.instance 指的是我正在使用此表单更新的Class 模型实例。但是,使用此代码,我将收到一个表单字段的Class 实例列表。我想要的是一个Student 列表,对应于表单字段中的每个Class 实例(每个班级只有一个学生)。因此,我想要 Student1、Student2、Student3 而不是 Class1、Class2、Class3。此外,如果学生姓名有任何重复,我只想显示一个。我希望学生们也按-date的顺序列出上面代码所示的课程。请问我任何问题。非常感谢。
这是你们中的一些人所问的类模型:
class Class(models.Model):
teacher = models.ForeignKey('Agent', null=True, blank=True, on_delete=models.SET_NULL)
student = models.ForeignKey('Lead', null=True, blank=True, on_delete=models.SET_NULL, related_name='student')
【问题讨论】:
-
您需要从
Teacher模型而不是Class模型构建您的查询集,并根据它们是否与某个类相关联(以及您需要的任何其他条件)进行过滤。 -
请分享您的模型。
-
@michjnich 不幸的是,我在
Class模型中使用了一个外键来指向Teacher模型,这意味着我无法从老师那里查询课程。 -
@WillemVanOnsem 我为
Class添加了模型。Teacher(或“代理”)中没有将其链接到Class的字段。 -
您可以从老师那里链接回班级设置:docs.djangoproject.com/en/3.2/ref/models/relations/…
标签: python django django-models django-forms django-queryset