If I create new listing and upload an image, there is no issue. But When I try to reupload new or same image, it does not get uploaded and its url is pointing to not found file (media/FILENAME)
If I just create and, the image gets uploaded and stored at the right directory (media/images).
As soon as I try to upload the same or new image,the image does not get uploaded and its url is incorrect or pointing to the nonexistent address (media/FILENAME)
My model
class Listing(models.Model):
title = models.CharField(max_length=64)
image = models.ImageField(blank=True, null=True, upload_to="images/")
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Listing {self.id}: {self.title}"
def create(request):
if request.method == "POST":
form = NewListingForm(request.POST, request.FILES)
listings = Listing.objects.all()
if form.is_valid():
title = form.cleaned_data["title"]
image = form.cleaned_data["image"]
if image is None:
image = ""
try:
listing = Listing.objects.get(title=title)
except Listing.DoesNotExist:
listing = None
if listing is None and form.cleaned_data["edit"] is False:
new_listing = Listing.objects.create(title=title, image=image)
new_listing.save()
return HttpResponseRedirect(reverse("auctions:listing", args=(new_listing.id,)))
elif form.cleaned_data["edit"] is True:
existing_listing = Listing.objects.filter(title=title)
existing_id = Listing.objects.get(title=title).id
existing_listing.update(title=title, image=image)
return HttpResponseRedirect(reverse("auctions:listing", args=(existing_id,)))
else:
return render(request, "auctions/create.html", {
"form": form,
"error": "Duplicate Item.",
"existing_title": title,
})
else:
return render(request, "auctions/create.html", {
"form": NewListingForm()
})
else:
return render(request, "auctions/create.html", {
"form": NewListingForm()
})
class NewListingForm(forms.Form):
title = forms.CharField(label="Title",widget=forms.TextInput(attrs={"class": "form-control"}))
image = forms.ImageField(required=False)
def edit(request, listing_id):
listing = Listing.objects.get(pk=listing_id)
if listing is None:
return render(request, "auctions/index.html", {
"error": "Invalid Access."
})
else:
form = NewListingForm()
form.fields["title"].initial = listing.title
form.fields["image"].initial = listing.image
return render(request, "auctions/create.html", {
"form": form,
"edit"