Django Как правильно загрузить изображение в форму?

Вот мой код, связанный с формой:

модели

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)


class Photo(models.Model):
    date = models.ForeignKey('Date', on_delete=models.CASCADE)
    image = models.ImageField(verbose_name='Photos', upload_to='media/date/photos/')

# form

class DateForm(forms.ModelForm):
    image = forms.ImageField()
    class Meta:
        model = Date
        exclude = ('user',)

# 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
        form.save() # by the way why do I save this form? Is it okay to save it in 
form_valid method?
        photos = self.request.FILES.getlist('image')
        for photo in photos:
            Photo.objects.create(image=photo)
        return super().form_valid(form)

Проблема в том, как сохранить объекты Photo, если для этого требуется идентификатор модели Date. При этом возникает ошибка NOT NULL constraint failed: app_photo.date_id Как я понимаю, я должен написать что-то вроде:

Photo.objects.create(date=date_from_the_form, image=photo)

Но как получить pk из модели Date? Надеюсь, вы поняли мою проблему, если есть вопросы, не стесняйтесь, пишите их ниже в разделе комментариев. Заранее спасибо!

Ошибка

Когда вы вызываете form.save(), он возвращает экземпляр модели, поэтому вы можете получить экземпляр из него следующим образом

def form_valid(self, form):
    form.instance.user = self.request.user
    date_instance = form.save() 
    photos = self.request.FILES.getlist('image')
    for photo in photos:
       Photo.objects.create(date=date_instance, image=photo)
    return super().form_valid(form)
Вернуться на верх