【问题标题】:Django Form Automatically select first option if only one choice availableDjango Form 如果只有一个选项可用,则自动选择第一个选项
【发布时间】:2018-02-28 15:59:22
【问题描述】:

在只有一个选项可用的情况下,是否有一种简单的方法可以在 Django 表单中选择下拉列表的第一个选项?

我所说的简单是指不需要定义自己的小部件的解决方案,在我们所有的(模型)表单中更改这将是相当重复的。

更新,因为最初的问题似乎不清楚:

我希望仅在有一个选项可用时才选择初始选项。如果选项是对另一个模型的外键引用,那么这样做的方法对我来说并不明显:

class Category(models.Model):
     name = CharField(...)

class Post(models.Model):
    category = ForeignKey(Category)

class PostForm(forms.ModelForm):
    class Meta:
        fields = '__all__'
    [...]

现在我希望 PostForm 中的 category 字段自动选择到第一个类别,前提是数据库中只有一个实例,如果有两个或更多类别,则为 --------

【问题讨论】:

  • 发布一些代码。怎么用initial

标签: python django forms


【解决方案1】:

用这个怎么样:

Your_Dropdown = forms.TypedChoiceField(choices=your choises, initial='FIRST_OPTION')

如文档所示:Here

【讨论】:

    【解决方案2】:

    我在 get_form() 中这样做是这样的:

        def get_form(self, form_class=form_class):
            form = super(WPWeekSubjectCreateView, self).get_form(form_class)
            ....
            subjects = Subject.objects.filter(
                schoolyear=schoolyear,
                pk__in=subject_bearings,
                lesson__teachers=teacher
            ).order_by('abbreviation').distinct()
    
            form.fields['subject'].queryset = subjects
            if subjects.count() == 1:
                form.fields['subject'].initial = subjects.first()
        
            return form
    

    【讨论】:

      【解决方案3】:

      我觉得不需要解释,看下面的代码

      post_type_choices = (
          ('article', 'article'),
          ('tip', 'tip'),
          ('snippet', 'snippet'),
      )
      
      
      class Post(models.Model):
          post_type = models.CharField(
              max_length=10, choices=post_type_choices,default='article')
      

      【讨论】:

      • 好吧,如果您有预定义的选项,这将有效。但是,如果选择实际上是对另一个模型的外键引用,该怎么做呢?也许我的问题应该更清楚。我会更新的
      • 在更新后的问题中为模型添加代码 sn-ps
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 2017-12-30
      • 2017-12-05
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      相关资源
      最近更新 更多