我遵循了另一个stackoverflow的指令,但是不知何故,结果还是一样,列表没有丢失。
所以我确实做错了什么?
这是我的模特:
class Fakultas(models.Model):
fakul = models.CharField(max_length=50,unique=True)
def __str__(self): return self.fakul
class Userdata(models.Model):
user = models.OneToOneField(User, on_delete= models.CASCADE)
faculty = models.ForeignKey(Fakultas,on_delete=models.CASCADE,default= 1)
is_voted = models.BooleanField(default=False)
def __str__(self):return self.user.username
这是我的表格:
class UserFakultas(forms.ModelForm):
faculty = forms.ChoiceField(widget=forms.Select(attrs={'class': 'form-control'}))
class Meta:
model = Userdata
fields =['faculty']
def __init__(self,*args,**kwargs):
super().__init__(*args, **kwargs)
self.fields['faculty'].choices = [(faculty) for faculty in Fakultas.objects.all()]
答案 0 :(得分:0)
我总是在选择中使用两个值,并且它确实起作用: 并且您需要在 init 中重新分配该字段:
choices=[(faculty.id, faculty) for faculty in Fakultas.objects.all()]
self.fields['faculty'] = forms.ChoiceField(widget=forms.Select(attrs={'class': 'form-control'}), choices=choices)
第一个值(faculty.id)是将在POST中传递的id,第二个将以表格形式显示。