Django模型在初始给定时形成自定义init返回元组

时间:2013-06-14 18:07:13

标签: django django-forms

我有一个模型表单,我正在尝试传递一个模型实例来初始化值:

class ProjectModelForm(ModelForm):

    class meta:
        model = Project

    def __init__(self, project=None, *args, **kwargs):
        super(ProjectModelForm, self).__init__(*args, **kwargs)

        if project:
            self.fields['zipcode'].initial = project.zipcode

问题是该字段似乎填充了一个元组:

    (u'90210',)

即使我使用我知道的整数或字符串值进行硬编码,也会发生这种情况:

self.fields['zipcode'].initial = 90210呈现为(90210,)

self.fields['zipcode'].initial = '90210'呈现为('90210',)

有人可以解释这里发生了什么,并建议将结果呈现为简单字符串的最佳途径吗?

任何帮助非常感谢。

修改

models.py:

class Project(models.Model):
    ...
    zipcode = models.CharField(max_length=5, null=True, blank=True)     

1 个答案:

答案 0 :(得分:0)

初始化表单时,您可以传递默认值的初始字典:

在视图中:

initial = {}
if project:
    initial.update({'zipcode': project.zipcode})

form = ProjectModelForm(initial=initial)