【问题标题】:Set default value for dropdown in django forms为 django 表单中的下拉菜单设置默认值
【发布时间】:2011-08-17 10:00:40
【问题描述】:

我无法在加载表单时为下拉菜单设置默认值。

这里是代码

state = forms.TypedChoiceField(choices = formfields.State)

State = (
         ('QC_APPROVED','QC_APPROVED'),
         ('REVERT','REVERT'),
         ('FIXED','FIXED'),
        )

如果我想将默认状态设为 FIXED。我正在写这段代码

state = forms.TypedChoiceField(choices = formfields.State, default = 'FIXED')

如果我执行上面的代码,我会收到以下错误。

Exception Value: __init__() got an unexpected keyword argument 'default'

有人可以帮忙吗?

【问题讨论】:

    标签: django forms drop-down-menu


    【解决方案1】:
    state = forms.TypedChoiceField(choices=formfields.State, initial='FIXED')
    

    如文档所示:http://docs.djangoproject.com/en/dev/ref/forms/fields/#initial

    【讨论】:

    • 冷却它的工作。之前我指的是这个链接docs.djangoproject.com/en/dev/ref/models/fields/#default
    • @Vikram 我相信,如果值不存在,则不能将值设置为 default。您使用选择字段创建模型,因此仅在 .save() 方法之后创建选择。如果选择在其他已经作为模型存在于 db 中的类中,您将能够使用默认值。警告我可能是错的!主要思想是 default 可以是模型(或模型的一部分)而不是 e.a. 的值。文本字段。
    • 太棒了。对于任何想知道如何动态设置initial 值的人,您可以在实例化表单时使用initial 作为参数(如下面@Nic 的回答)
    【解决方案2】:

    我在寻找如何为外键字段设置 Django 表单的初始“选定”状态时遇到了这个线程,所以我只想补充一点,您可以按如下方式执行此操作:

    models.py:

    class Thread(NamedModel):
        topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
        title = models.CharField(max_length=70, blank=False)
    

    forms.py:

    class ThreadForm(forms.ModelForm):
        class Meta:
            model = Thread
            fields = ['topic', 'title']
    

    views.py:

    def createThread(request, topic_title):
        topic = Topic.getTopic(topic_title)
        threadForm = ThreadForm(initial={'topic': topic.id})
    ...
    

    关键是设置initial={'topic': topic.id},我认为这没有很好的记录。

    【讨论】:

      【解决方案3】:

      字段采用initial

      【讨论】:

        【解决方案4】:
        state = forms.TypedChoiceField(choices=formfields.State, initial='FIXED')
        
        title = forms.CharField(widget=forms.Select(choices=formfields.State) , initial='FIXED')
        
        toppings = forms.ChoiceField(
                widget=forms.Select(attrs={'class':"hhhhhhhh"}),
                choices = formfields.State,
                initial='FIXED'
            )
        

        【讨论】:

          【解决方案5】:

          试试号码:

          state = forms.TypedChoiceField(choices = formfields.State, default = 2 )
          

          【讨论】:

          • 就像 DTing 上面所说的,你应该使用初始而不是默认的形式。默认为模型。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-08-03
          • 2018-02-08
          • 2018-09-29
          • 2019-12-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多