python - 将多次上传的照片整合到我的帖子中 - 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)
解决方案
我可以看到你有 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
都会自动删除。
推荐阅读
- python - 根据单元格信息转换 pandas DataFrame
- sql - 外键不存在错误?甲骨文 SQL
- plotly-dash - 如何在 Dash 中更新侧边栏布局?
- python - 刷新 RQ 作业的 result_ttl
- python - 更优雅的 if 语句处理
- javascript - ForgeJS:应用“onClick”:[“action-loadscene-1”]链接
- java - 从 java spring 微服务将用户活动发送到外部服务
- c# - WPF Window 自定义事件创建和绑定到 ICommand
- python - Django(Gunicorn)在生产中没有看到 ENV VARS,但 Django-shell 有
- scalability - 您如何最好地为多个查询参数构建 DynamoDb