Мне нужно загрузить неопределенное количество изображений в мои сообщения, в настоящее время я могу загрузить только одно фото для сообщения. Как я могу загрузить несколько изображений в один пост? Прилагаю код своего приложения.
модели.py
class Casa(models.Model):
nome_casa = models.CharField(max_length=80)
descrizione = models.TextField()
logo_casa = models.ImageField(blank=True, null=True)
def __str__(self):
return self.nome_casa
def get_absolute_url(self):
return reverse("visualizza_casa", kwargs = {"pk" : self.pk})
class Meta:
verbose_name = "Casa"
verbose_name_plural = "Case"
просмотры.py
from django.shortcuts import render, get_object_or_404
from django.views.generic.edit import CreateView
from .models import Casa
from .mixins import StaffMixin
class CreaCasa(StaffMixin, CreateView):
model = Casa
fields = '__all__'
template_name = "inserzioni/crea_casa.html"
success_url = "/"
def visualizzaCasa(request, pk):
casa = get_object_or_404(Casa, pk=pk)
context = {"casa" : casa}
return render(request, "inserzioni/visualizza_casa.html", context)
Как я вижу, у вас есть модель Casa
, и пока у нее только одна ImageField
(logo_casa
), но вы хотите добавить к ней другие изображения.
Самый простой способ сделать это — создать другую модель (например, CasaImage
) и добавить к ней ImageField
. Пример:
# models.py
class Casa(models.Model):
nome_casa = models.CharField(max_length=80)
descrizione = models.TextField()
logo_casa = models.ImageField(blank=True, null=True)
def __str__(self):
return self.nome_casa
def get_absolute_url(self):
return reverse("visualizza_casa", kwargs = {"pk" : self.pk})
class Meta:
verbose_name = "Casa"
verbose_name_plural = "Case"
class CasaImage(models.Model):
casa = models.ForeignKey(Casa, on_delete=models.CASCADE)
image = models.ImageField()
Обратите внимание, что я оставил поле logo_casa
, чтобы отличать логотип от других Casa
изображений. CasaImage
имеет ForeignKey
поле, которое представляет отношение многие к одной базе данных (подробнее можно прочитать здесь https://docs.djangoproject.com/en/2.2/topics/db/examples/many_to_one/). Параметр on_delete=models.CASCADE
означает, что при удалении экземпляра Casa
все связанные CasaImages
будут удалены автоматически.
Я предоставил вам файл models.py
, но вам также нужно будет изменить свой вид CreaCasa
. Точнее: вам нужно переопределить form_valid
метод просмотра и создать там CasaImage
экземпляры. P.S. извините, я не могу прикрепить пример кода к комментарию, но вы можете задать другой вопрос, если не хотите подробностей режима.
привет, спасибо за ответ, как я должен управлять этим в файле views.py? Добрый вечер