So I have this codes. the view:
class CreateDateView(LoginRequiredMixin, CreateView):
template_name = 'app/date/form.html'
form_class = DateForm
def form_valid(self, form):
form.instance.user = self.request.user
return super().form_valid(form)
the modelform:
class DateForm(ModelForm):
image = forms.ImageField()
class Meta:
model = Date
exclude = ('user',)
models:
class Date(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
place = models.ForeignKey('Place', on_delete=models.CASCADE, null=True)
title = models.CharField(max_length=64, null=True)
description = models.TextField(max_length=640, blank=True)
slug = models.CharField(max_length=80, unique=True, editable=False)
date = models.DateField(auto_now_add=True)
rating = models.PositiveSmallIntegerField(default=0, validators=[MaxValueValidator(5)])
class Photo(models.Model):
date = models.ForeignKey(Date, on_delete=models.CASCADE)
image = models.ImageField(verbose_name='Photos', upload_to='media/date/photos/')
the form:
<form action="{% url 'app:date_form' %}" method="post">
{% csrf_token %}
<div class="form-container">
<h1>New Date</h1>
<p class="p-form">Title</p>
{{ form.title }}
<p class="p-form">Description</p>
{{ form.description }}
<p class="p-form">Place</p>
{{ form.place }}
<p class="p-form">Rating</p>
{{ form.rating }}
{{ form.image }}
</div>
<div class="buttons">
<input type="submit" value="Create" class="create-button redirection no_decoration">
<a href="{% url 'app:home' %}" class="redirection no_decoration">Back</a>
</div>
</form>
the form error:
<tr>
<th><label for="id_image">Image:</label></th>
<td>
<ul class="errorlist"><li>This field is required.</li></ul>
<input type="file" name="image" accept="image/*" required id="id_image">
</td>
</tr>
<ul class="errorlist"><li>image<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
Whenever I try to save my form, its form_invalid method is being called and it doesn't save the form. What is the matter? How do I save extra field of ForeignKey model? How can I get that images sent via form? Thanks!