如何将图像字段设置为可选?

时间:2019-09-28 07:22:49

标签: django django-templates

如何将图像字段设置为可选?我试图将图像字段设置为可选(无或选中)。提交表单时,“图像”字段为None,并且抛出“ MultiValueDictKeyError”。我想将此图像字段设置为“无”。 models.py

class Profile(models.Model):
    first_name = models.CharField(max_length=255, blank=True, null=True)
    last_name = models.CharField(max_length=255, blank=True, null=True)
    image = models.ImageField(upload_to='images', blank=True, null=True)

forms.py


    class Meta:
        model = Profile
        fields = '__all__'

views.py

def profile(request):
    if request.method == 'POST':
       form = ProfileForm(request.POST)
       if form.is_valid:
          first_name = request.POST.get('first_name')
          last_name = request.POST.get('last_name')
          image = request.FILES['images']
          file_storage = FileSystemStorage()
          obj = Profile(first_name=first_name, last_name=last_name, image=file_storage.save(image.name, image))
          return render(request, 'index.html',{})
       return render(request, 'index.html',{})
    return render(request, 'index.html',{})

index.html

<form action="#" method="post" enctype="multipart/form-data">
      {% csrf_token %}
      <input type="text" name="first_name" class="form-control form-control" id="fname">
      <input type="text" name="last_name" class="form-control form-control" id="lname">
      <input type="file" name="images" class="form-control" id="image">
      <button type="submit" class="btn btn-primary mt-5 mb-5">Save</button>
</form>

1 个答案:

答案 0 :(得分:0)

使用您在其他字段中使用的相同方法:

image = request.FILES.get('images')

如果请求中不存在image,则将使image = None。然后:

image_saved = None
if image is not None:
  image_saved = FileSystemStorage().save(image.name, image)
obj = Profile(first_name=first_name, last_name=last_name, image=image_saved)