Django 1.8 设置存在更新表单的默认值

Posted

技术标签:

【中文标题】Django 1.8 设置存在更新表单的默认值【英文标题】:Django 1.8 set exist default value of Update form 【发布时间】:2015-07-12 15:17:40 【问题描述】:

我写了模板

<div class="container">
    <form action="" method="post">
        % csrf_token %
         form.as_p 
        <input type="submit">
    </form>
</div>

而且,我的视图在下面

class UserProfileUpdateView(UpdateView):
    model = UserProfile
    form_class = UserProfileUpdateForm
    template_name_suffix = '_update_form'

下面是我的 UserProfile 模型。 它使用用户密钥

  class UserProfile(models.Model):
      # This line is required. Links UserProfile to a User model instance.
      user = models.OneToOneField(User)

      # The additional attributes we wish to include.
      website = models.URLField(blank=True, verbose_name=u'Webサイト')
      picture = models.ImageField(
          upload_to='uploads/profile_images/%Y/%m/%d', blank=True,
          null=True, verbose_name=u'Image'
      )
      age = models.IntegerField(verbose_name=u'Age')
      country = models.CharField(max_length=30, verbose_name=u'country')
      profile = models.CharField(max_length=300, verbose_name=u'profile')
      address = models.CharField(max_length=300, verbose_name=u'address')
      GENDER_CHOICES = (
          (u'M', u'Male'),
          (u'F', u'Female'),
      )
      gender = models.CharField(max_length=2, choices=GENDER_CHOICES, verbose_name=u'Gender')
      CATEGORY_CHOICES = (
          (u'U', u'u'),
          (u'R', u'r'),
      )
      category = models.CharField(max_length=2, choices=CATEGORY_CHOICES, verbose_name=u'category')
      last_accessed = models.DateTimeField()

我的表格是

class UserProfileUpdateForm(forms.ModelForm):
    slug_field = 'user_slug'

    class Meta:
        model = UserProfile
        fields = (
            'address', 'profile', 'gender', 'category',
            'age',
            'website', 'picture',
        )

但是,我的表单无法填写之前已经设置的默认值。

你能告诉我为什么不设置吗?

【问题讨论】:

你能发布你的模型吗? 感谢您的回复。我添加了我的模型 【参考方案1】:

你应该看看这个:Django: using ModelForm to edit existing database entry

关键是:

form  = MyModelForm(instance=MyModel.objects.get(pk=some_id))

【讨论】:

以上是关于Django 1.8 设置存在更新表单的默认值的主要内容,如果未能解决你的问题,请参考以下文章

升级到 Django 1.8 后“提供的固定默认值”

Django forms select默认值和选中值的展示

Django model.py表单的默认值 默认允许为空

默认值的 Django 表单验证错误

v4.1.8 更新,Cloud 下使用 BPM,读写分离,柔性事务

为 django 隐藏表单字段指定默认值 - 骨干?