【问题标题】:Django how to set initial object to ModelList?Django如何将初始对象设置为ModelList?
【发布时间】:2012-02-20 20:01:21
【问题描述】:

我已经创建了一个简单的模型

class Person(models.Model):
    name = models.CharField(max_length=25)
    surname = models.CharField(max_length=25)
    birth_date = models.DateField()
    ...

还有一个简单的 ModelForm

class PersonForm(ModelForm):
class Meta:
    model = Person

如何将我已经拥有的 Person 对象(例如Person.objects.get(pk=1))作为表单的初始值?我需要编辑这个对象

【问题讨论】:

  • 您只需要将表单绑定到您需要显示为初始值的对象的实例或副本(例如:docs.djangoproject.com/en/dev/topics/forms/modelforms)。只需确保在保存时创建对象的新实例,而不是最终编辑保存的实例。您可以使用 javascript 在悬停时重置表单输入的值,这样用户就不必删除预设值。

标签: python django django-forms


【解决方案1】:

来自文档:

# Creating a form to add an article.
>>> form = ArticleForm()

# Creating a form to change an existing article.
>>> article = Article.objects.get(pk=1)
>>> form = ArticleForm(instance=article)

所以在你的情况下,在你的views.py中:

person = Person.objects.get(pk=1)
form = PersonForm(instance=person)

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#modelform

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2018-09-11
    • 2020-07-09
    • 1970-01-01
    相关资源
    最近更新 更多