Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
设置django表单中下拉列表的默认值_Django_Forms_Drop Down Menu - Fatal编程技术网

设置django表单中下拉列表的默认值

设置django表单中下拉列表的默认值,django,forms,drop-down-menu,Django,Forms,Drop Down Menu,加载表单时,我无法设置下拉列表的默认值 这是密码 state = forms.TypedChoiceField(choices = formfields.State) State = ( ('QC_APPROVED','QC_APPROVED'), ('REVERT','REVERT'), ('FIXED','FIXED'), ) 如果我想将默认状态设置为固定状态。我正在写这段代码 state = forms.TypedC

加载表单时,我无法设置下拉列表的默认值

这是密码

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

State = (
         ('QC_APPROVED','QC_APPROVED'),
         ('REVERT','REVERT'),
         ('FIXED','FIXED'),
        )
如果我想将默认状态设置为固定状态。我正在写这段代码

state = forms.TypedChoiceField(choices = formfields.State, default = 'FIXED')
如果我执行上面的代码,我会得到下面的错误

Exception Value: __init__() got an unexpected keyword argument 'default'
有人能帮上忙吗?

字段取值

如文档所示:

请尝试以下号码:

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

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

型号。py:

class Thread(NamedModel):
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    title = models.CharField(max_length=70, blank=False)
class ThreadForm(forms.ModelForm):
    class Meta:
        model = Thread
        fields = ['topic', 'title']
def createThread(request, topic_title):
    topic = Topic.getTopic(topic_title)
    threadForm = ThreadForm(initial={'topic': topic.id})
...
forms.py:

class Thread(NamedModel):
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    title = models.CharField(max_length=70, blank=False)
class ThreadForm(forms.ModelForm):
    class Meta:
        model = Thread
        fields = ['topic', 'title']
def createThread(request, topic_title):
    topic = Topic.getTopic(topic_title)
    threadForm = ThreadForm(initial={'topic': topic.id})
...
视图。py:

class Thread(NamedModel):
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    title = models.CharField(max_length=70, blank=False)
class ThreadForm(forms.ModelForm):
    class Meta:
        model = Thread
        fields = ['topic', 'title']
def createThread(request, topic_title):
    topic = Topic.getTopic(topic_title)
    threadForm = ThreadForm(initial={'topic': topic.id})
...

关键是设置
initial={'topic':topic.id}
,这在我看来没有很好的文档记录

冷却它的工作。前面我提到的链接@Vikram我相信,如果这个值不存在,就不能将其设置为默认值。如果使用选项字段创建模型,则只有在.save()方法之后才能创建选项。若选项在db中某个地方已经作为模型存在的其他类中,那个么您就可以使用默认值。警告我可能错了!主要的想法是默认值可能是一个模型(或其中的一部分),而不是e.a.文本字段的值。太好了。对于任何想知道如何动态设置
initial
值的人,您可以在实例化表单(如下面@Nic的答案)时使用
initial
作为参数,就像上面DTing所说的,您应该使用initial而不是default。默认值是针对模型的。
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'
    )