【问题标题】:When editing an object in django the ImageField is not populated在 django 中编辑对象时,未填充 ImageField
【发布时间】:2011-01-03 15:05:28
【问题描述】:

我正在尝试通过表单编辑现有对象。除了没有用当前值填充 ImageField 之外,一切都运行良好。

这是模型:

class Post(models.Model):
    author = models.ForeignKey(User, editable=False)
    slug = models.SlugField(max_length = 110, editable=False)
    title = models.CharField(verbose_name='Blog Title', max_length=40, blank=False)
    body = models.TextField(verbose_name='Body')
    thumbnail = models.ImageField(upload_to = 'posts/%Y/%m')

这是风景

@login_required
def edit_profile(request, form_class=UserProfileForm, success_url=None, template_name='profiles/edit_profile.html', extra_context=None):

try:
    profile_obj = request.user.get_profile()
except ObjectDoesNotExist:
    return HttpResponseRedirect(reverse('profiles_create_profile'))

if success_url is None:
    success_url = reverse('profiles_profile_detail',
                          kwargs={ 'username': request.user.username })
if form_class is None:
    form_class = utils.get_profile_form()
if request.method == 'POST':
    form = form_class(data=request.POST, files=request.FILES, instance=profile_obj)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect(success_url)
else:
    form = form_class(instance=profile_obj)

if extra_context is None:
    extra_context = {}
context = RequestContext(request)
for key, value in extra_context.items():
    context[key] = callable(value) and value() or value

return render_to_response(template_name,
                          { 'form': form,
                            'profile': profile_obj, },
                          context_instance=context)

这个对象确实有一个缩略图,但是当我去编辑时,缩略图字段中什么都没有显示

【问题讨论】:

  • 截图没有代码。为什么不发布呈现的html?我们只能做 sheheats 所做的事情,并假设您使用的是 form.as_p

标签: django django-forms django-file-upload


【解决方案1】:

我相信答案在于文件输入字段在显示值时会显示用户计算机上所选文件的本地路径。这个值没有保存在 Django 中的任何地方,所以 Django 不能也不会在编辑时在表单中显示这个值。

您需要做的是单独打印模板中的每个字段,而不是打印整个表单。然后,使用您的缩略图字段,将当前选择的缩略图显示为页面上的实际图像,并使用文件输入字段允许用户上传新图像。

【讨论】:

    猜你喜欢
    • 2017-10-10
    • 2011-08-19
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 2016-02-25
    • 2018-09-06
    • 1970-01-01
    相关资源
    最近更新 更多