从数据库模型填充表单

时间:2015-03-06 12:01:12

标签: django django-admin

我在管理界面中有一个关于某个人和一个按钮的信息,可以转到我与合作伙伴签订合同的合同:

class Person(models.Model):
    name = models.CharField(max_length=32, verbose_name=_(u"Name"))
    surname = models.CharField(max_length=32, verbose_name=_(u"Surname"))
    address = models.CharField(max_length=32, verbose_name=_(u"Address"))

我需要这样,当按钮将我带到表单来创建合同时,某些字段已经填充了有关该人(姓名,姓氏,地址)的信息。该信息已存在于数据库中。

3 个答案:

答案 0 :(得分:1)

您应该查看Django Model Form文档,尤其是providing initial values部分。

来自文档:

class Article(models.Model):
    headline = models.CharField(max_length=200, null=True, blank=True,
                            help_text="Use puns liberally")
    content = models.TextField()


class ArticleForm(ModelForm):
    class Meta:
        model = Article

>>> article = Article.objects.get(pk1=)
>>> article.headline
'My headline'
>>> form = ArticleForm(initial={'headline': 'Initial headline'), instance=article)
>>> form['pub_date'].value()
'Initial headline'

答案 1 :(得分:0)

您可以使用GET参数传递管理表单的初始数据。例如:

/admin/app/person/add/?name=some+name&surname=surname&address=some+street

将打开包含预填充字段的Person创建表单。

答案 2 :(得分:0)

Django得到了你的回报。查看form.initial

form = YourForm(intial={'name': name ...} )

然后,您可以在模板中手动渲染表单。