DJANGO НЕСКОЛЬКО ИЗОБРАЖЕНИЙ ЗАГРУЗИТЬ ДЛЯ ПОЧТЫ

Пожалуйста, помогите мне. Я новичок в Django, не могу понять и следующее. У меня есть подкласс CreateView для создания поста. Я создаю проект сайта аренды, где люди могут публиковать свои отдельные части и прикреплять к ним файлы (изображения). Нужно иметь возможность прикрепить столько изображений, сколько он хочет, чтобы ОДНА форма. Я нашел в Интернете решение, что мне нужно использовать 2 модели - 1 модель для поста + 1 отдельная модель для изображений. Это так?

Форма публикации создается и обрабатывается в моем views.py подклассом CreateView. Теперь, как связать новую отдельную модель для изображений с моим CreateView? И сохранить все изображения в текущую форму сообщения?

заранее спасибо

models.py

class Post(models.Model):
    post_author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    post_title = models.CharField(_('Title'),max_length=200, null=True, blank=False)
    post_type = models.CharField(_('Type'),max_length=18, choices=post_type_list, default='appart')
    post_content = models.TextField(_('Your post description'),blank=True)
    post_created_date = models.DateTimeField(default=timezone.now, help_text=_('Post creation date and time.'),)
    post_published_date = models.DateTimeField(null=True, blank=True, help_text=_('Post publication date and time.'),)

    def get_absolute_url(self):
        return reverse("posts:post_details", kwargs={'pk':self.pk,'post_type':self.post_type})


class Post_Gallery(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    current_hour = datetime.datetime.now()
    images = models.ImageField(_('Upload some pictures'),upload_to='uploads/%Y/%m/%d/{}'.format(current_hour.hour), max_length=100, null=True, blank=True)

    def __unicode__(self):
        return self.images.url

forms.py

class NewPostForm(forms.ModelForm):

    class Meta:
        model = Post

        fields = [
            'post_title','post_type','post_content',
        ]

class GalleryForm(forms.ModelForm):

    class Meta:
        model = Post_Gallery

        fields = ['images',]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['images'].widget.attrs.update({'multiple': True, 'accept': 'image/jpg,image/jpeg,image/png,image/gif',} )

actual views.py


class NewPostView(CreateView):
    form_class = NewPostForm
    template_name = 'posts/submit-post.html'
    model = Post

    @method_decorator(login_required)
    def dispatch(self, *args, **kwargs):
    return super().dispatch(*args, **kwargs)

    def form_valid(self, form):
        form.instance.post_author = self.request.user
        return super().form_valid(form)

    def get(self, request):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        return render(self.request, 'posts/submit-post.html', {'form': form})

0 ответов

Другие вопросы по тегам