首页 > 解决方案 > 将多次上传的照片整合到我的帖子中 - 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)

标签: pythondjango

解决方案


我可以看到你有 model 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都会自动删除。


推荐阅读