更新图像字段时,初始数据不起作用

时间:2016-12-25 00:37:11

标签: python django django-models django-forms django-views

这是模型

class UserInfoModel(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, default=1, unique=True)
    web_site = models.URLField(max_length=200, null=True, blank=True)
    biography = models.TextField(null=True, blank=True)
    profile_pic = models.ImageField(
       upload_to=upload_location,
       null=True,
       blank=True,
       height_field='height_field',
       width_field='width_field',
   )
    height_field = models.IntegerField(default=0, null=True, blank=True)
    width_field = models.IntegerField(default=0, null=True, blank=True)

这是观点

# my info
try:
    my_image = cache.get(request.user, None)
    if not my_image:
        my_image = UserInfoModel.objects.get(user=request.user)
        cache.set(request.user, my_image, None)
except:
    my_image = None
try:
    info_user = my_image
    initial_data = {
        'web_site': info_user.web_site,
        'biography': info_user.biography,
    }
    info = UserInfoForm(request.POST or None, instance=info_user, initial=initial_data)
except:
    info = UserInfoForm(request.POST or None)

if info.is_valid():
    new_info = info.save(commit=False)
    new_info.user = request.user
    new_info.save()
    return redirect('/index/')

在代码上方,如果有初始数据,那么我在页面中显示数据然后我们可以根据需要进行更改,并且初始数据非常精细

# my info
try:
    my_image = cache.get(request.user, None)
    if not my_image:
        my_image = UserInfoModel.objects.get(user=request.user)
        cache.set(request.user, my_image, None)
except:
    my_image = None
try:
    info_user = my_image
    initial_data = {
        'web_site': info_user.web_site,
        'biography': info_user.biography,
    }
    user_form = UserInfoForm(request.POST or None, request.FILES or None, instance=info_user, initial=initial_data)
except:
    user_form = UserInfoForm(request.POST or None, request.FILES or None)

if user_form.is_valid():
    form = user_form.save(commit=False)
    form.user = request.user
    form.save()
    return redirect('/'+str(request.user.username)+'/')

但在代码之上,如果我在模型中保存任何图像,那么所有类型的文本字段都消失了

在模型中我有1个图像字段2文本字段,但是文本字段和图像字段保留在不同的页面但不会出错,因为textfields和image字段为null tr​​ue true true,在文本字段的页面中如果我保存,那么即使图像字段有图像也保存了所有内容然后图像没有消失,但是在图像字段页面中如果我保存图像则所有文本字段都消失了,为什么会发生

===========解决方案=============

Okey这让我感到困惑,因为每个保存方法,更新方法都是这样的,但是如果你有一个模型,这个模型有图像和文本,那么如果你想从不同的页面更新图像和文本,问题来自在HTML文档里面,因为当你输入enctype =' multipart / data'那么html文档不会渲染我们在视图中指定的任何初始数据,但如果你在其他页面中更新文本,一切都很好,只是工作正常。因此,解决方案是,如果您喜欢该项目,那么使用单独的模型,这将工作,有一个美好的一天。

0 个答案:

没有答案