我有这段代码forms.ModelChoiceField(queryset=ModelClass.objects.all())
,但是它显示了所有的值,除了重复之外,有没有办法从表单中的ModelChoiceFiel中删除重复数据,但不能在模型中删除?
的 Models.py
class SchoolYear(models.Model):
number=models.IntegerField()
class Year(models.Model):
year=models.IntegerField()
class Course(models.Model):
name=models.CharField(max_length=50)
year = models.ForeignKey(year, on_delete=models.CASCADE)
schoolYear= models.ForeignKey(SchoolYear,on_delete=models.CASCADE)
Forms.py
class InfoForm(forms.Form):
course=forms.ModelChoiceField(queryset=Course.objects.all())
答案 0 :(得分:1)
你可以这样做,你将有一个查询集,其中所有的课程名称都是重复的值,不方便的是它不是实例本身的问题。
Course.objects.values_list('name',flat=True).distinct()
其他方式,如果您想拥有课程实例列表:
courses_list = []
for name in Course.objects.values_list('name', flat=True).distinct():
courses_list.append(Course.objects.filter(pk__in=Course.objects.filter(name=name).values_list('id', flat=True)).first())