如何编写视图以更新Django中的模型图像?

时间:2018-12-08 08:25:55

标签: python django admin

我用配置文件模型扩展了django User模型。我要添加更新用户的个人资料功能。因为我将B字段设为唯一字段,所以在我的更新视图功能中,更新表单的A始终为num。我也无法更新照片png?这是我的代码;

型号:

is_valid

表格:

False

观看次数:

class Profile(models.model):
   user = models.OneToOneField(User,on_delete=models.CASCADE)
   num =models.CharField('identity',max_length=254,unique=True)
   photo = models.ImageField('image',upload_to = 'images/licences')

模板

class ProfileForm(forms.ModelForm):
    class Meta:
        model= Profile
        fields = ['num','photo']

1 个答案:

答案 0 :(得分:1)

由于num字段是唯一的,并且在更新个人资料图像时不会再次生成,因此您可以忽略request.POST并将instance参数传递给ProfileForm类。

示例

def modify_view(request):
    user = request.user
    if request.method=="POST":
        user_profile = Profile.objects.get(user=user)

        form = ProfileForm(files=request.FILES, instance=user_profile)
        if form.is_valid():
            user_profile.image = form.clean_data['image']
            user_profile.save()
    else:
        form = ProfileForm()
    return render(request,"profile.html",{form:form}