使用数据库Django填充下拉列表

时间:2020-11-08 16:00:36

标签: python-3.x django django-models

我遵循了另一个stackoverflow的指令,但是不知何故,结果还是一样,列表没有丢失。 所以我确实做错了什么?enter image description here

这是我的模特:

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()]

1 个答案:

答案 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,第二个将以表格形式显示。