表单中的 Django 选择字段

Posted

技术标签:

【中文标题】表单中的 Django 选择字段【英文标题】:Django choices field in form 【发布时间】:2021-09-29 00:17:33 【问题描述】:

我有两张桌子:

class Career(models.Model):    
    title = models.CharField(max_length=300)
    job_type = models.CharField(max_length=20, blank=False, default=None)
    location = models.CharField(max_length=200, blank=False, default=None)
    description = RichTextUploadingField(max_length=227, blank=False, default=None)

class ApplyJob(models.Model):
    first_name = models.CharField(verbose_name=_('First Name'), max_length=100)
    last_name = models.CharField(verbose_name=_('Last Name'), max_length=100)
    email = models.EmailField(verbose_name=_('Email'), max_length=200)
    position = models.CharField(verbose_name=_('Position'), max_length=40)
    apply = models.ManyToManyField(Career, default=None, blank=True)

还有一个 ModelForm:

class Meta:
    model = ApplyJob
    fields = ('first_name', 'last_name', 'email','position', 'message')
    widgets = 
         'position': forms.Select(choices=CHOICES, attrs='class': 'form-control')

我想在position 中使用职业表中的值添加选项选择,因此尝试查询职业表以获取所有值。所以我尝试了CHOICES = Career.objects.values_list('title', flat=True).distinct(),但我得到了Exception Error: too many values to unpack (expected 2)

对问题所在有什么想法吗? 谢谢!

【问题讨论】:

这***.com/questions/37205793/…能解决你的问题吗! 感谢您的评论!但这并没有解决我的问题! 【参考方案1】:

对于那些可能挑战同样问题的人。我通过在查询中添加id 解决了这个问题。我的理解是选择字段需要一个 id 和一个显示名称。 CHOICES = Career.objects.values_list('id', 'title').distinct()

【讨论】:

以上是关于表单中的 Django 选择字段的主要内容,如果未能解决你的问题,请参考以下文章

表单中的 Django 选择字段

Django 表单中的可编辑选择字段/下拉框

如何根据 Django 下拉菜单中的选择显示和隐藏表单字段

表单 ModelChoiceField 查询集 + 额外选择字段 django 表单

在表单中的特定字段上引发 Django 中的错误

Django - 禁用表单选择字段验证