I don't get any errors. Ok who sees the mistake? because I don't. here is my code:
Views.py:
class UpdateFeaturete(generic.UpdateView):
template_name = 'images/updatefeaturete.html'
model = FeatureteImage
fields = ['header', 'body', 'image']
def get_object(self):
return get_object_or_404(FeatureteImage, pk=self.kwargs['f_pk'])
def form_valid(self, form):
return super(UpdateFeaturete, self).form_valid(form)
models.py:
class FeatureteImage(models.Model):
park = models.ForeignKey(Park)
header = models.CharField(max_length=50, blank=True)
body = models.TextField(max_length=250, blank=True)
image = models.ImageField(upload_to='featureteimages')
def save(self, *args, **kwargs):
park = Park.objects.get(id=self.venue.id)
if park.featurete >= 3:
pass
else:
park.featurete += 1
park.save()
super(FeatureteImage, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse('park-features', kwargs={'pk': self.park.pk,})
my template:
<form method="post" action="" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
{{ form|crispy }}
</div>
<input type="submit" value="Save Changes." class="btn btn-primary" />
</form>
Everything seems to be working properly. All the fields seem to update except the ImageField. Thank you in advance!
Ah okay, so what you need is not the save method you need to override the clean method:
def clean(self):
park = Park.objects.get(id=self.venue.id)
if park.featurete >= 3:
raise ValidationError('error message goes here')