Интегрировать несколько загрузок фотографий в мои посты - django

Мне нужно загрузить неопределенное количество изображений в мои сообщения, в настоящее время я могу загрузить только одно фото для сообщения. Как я могу загрузить несколько изображений в один пост? Прилагаю код своего приложения.

модели.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)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как я вижу, у вас есть модель 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 будут удалены автоматически.

привет, спасибо за ответ, как я должен управлять этим в файле views.py? Добрый вечер

giuseppe 09.04.2019 00:55

Я предоставил вам файл models.py, но вам также нужно будет изменить свой вид CreaCasa. Точнее: вам нужно переопределить form_valid метод просмотра и создать там CasaImage экземпляры. P.S. извините, я не могу прикрепить пример кода к комментарию, но вы можете задать другой вопрос, если не хотите подробностей режима.

Lich 09.04.2019 09:48

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