I need to fill the field name and image to upload to the Django DB but I can't make it to update it using the form label of HTML

**views.py**

```
"""Artist views."""
# Django
from django.shortcuts import render, redirect
from django.views import View
from django.http import HttpResponse

# Models
from music.models import Artist

# Forms
from artist.forms import ArtistForm

class AddArtistView(View):
 """Adding new artist."""

 def upload_image(request):
     if request.method == 'POST':
         form = ImageUploadForm(request.POST, request.FILES)
         if form.is_valid():
             m = Artist.objects.get(pk=image_id)
             m.model_pic = form.cleaned_data['image']
             m.save()
             return HttpResponse('Image upload success')
     return HttpResponseForbidden('Allowed only via POST')

 template = "artist/create_artist.html"  

 def get(self, request):
    """Render add artist form."""
    form = ArtistForm()
    context = {"form": form}
    return render(request, self.template, context)

 def post(self, request):
    """Receive and validate add artist form."""
    form = ArtistForm(request.POST)

    if not form.is_valid():
       context = {"form": form}
       print(form.errors)
       return render(request, self.template, context)

    new_artist = Artist.objects.create_artist(
        name=form.cleaned_data["name"],
    )
    return HttpResponse("<h1>Artist Added!</h1>")

```

**models.py**

```
"""Music Models"""
from django.db import models

class Artist(models.Model):
    """Artist Model."""

    name = models.CharField(max_length=200)
    image = models.ImageField(null=True, upload_to='artists/images/')

    def __str__(self):
        """Get str representation."""
        return self.name

    def __repr__(self):
        """Get str representation."""
        return self.__str__()

```

**forms.py**

```
"""Artist forms."""
# Django
from django import forms
#from django.contrib.auth.models import Artist

from music.models import Artist

class ArtistForm(forms.Form):
    """Add new artist"""

    name = forms.CharField(max_length=200)
    image = forms.ImageField()

    def clean_name(self):
        """Validate that the artist name doesn't exist in the database."""
        data = self.cleaned_data["name"]
        if Artist.objects.filter(name=data).count() > 0:
            raise forms.ValidationError("This artist already exists.")

        return data

```

And finally the **HTML**

```
{% extends 'music/base.html' %}

{% block title %}Add Artist{% endblock title %}
{% block body_content %}
<h1>Add New Artist</h1>
<form action= "{% url upload_image %}" method="POST" enctype="multipart/form-data">
    {% csrf_token %}

    {% for field in form %}
    <div>
        {{ field.errors }}
        {{ field.label_tag }}
        {{ field }}
    </div>
    {% endfor %}
    <input value="Add" type="submit">
</form>
{% endblock body_content %}

```

The result I had several times is a 405 and 404 error or being redirected to the same page the artist name field stays but the image I uploaded is gone with the message: 

See the image

[![enter image description here](https://i.stack.imgur.com/7li60.png)](https://i.stack.imgur.com/7li60.png)