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})