【问题标题】:Django admin - creating image admin modelsDjango admin - 创建图像管理模型
【发布时间】:2020-10-12 12:23:58
【问题描述】:

我浏览了帖子,但没有找到我要找的东西,这就是我要问的原因。

目标是能够在管理员中创建图片库,然后上传图片并选择要上传的(已经创建的)图库,然后在创建帖子时(例如)有一个字段访问图库模型并选择要在所述帖子的轮播图库中使用的图像。

例如,我正在旅游博客中创建一个帖子,并想添加一些我不得不在轮播中使用的旅行图片。

我希望我已经解释了可以理解的目标,并且有人能够向我展示一种方式或指向正确的方向

如果有任何第一方解决方案,我会很高兴

由于我是 django 新手,请链接更详细的答案或教程或为新手解释

【问题讨论】:

  • 您可以创建Post 模型,将ForeignKey 链接到Trip 模型,在Trip 详细信息页面中,您可以添加InlineModelAdmin 和帖子列表。
  • 感谢您的回答,但如果我想为多个帖子重复使用同一张照片或图像怎么办?这个想法是有一个地方(画廊)来存放我上传的照片,并且能够在我创建帖子时打开画廊并选择我想要用于当前帖子的图像。

标签: django image upload gallery image-gallery


【解决方案1】:

这是您想法的答案.. 像这样改变你的models.py

class Carousel(models.Model):
    carousel_name = models.CharField(max_length=50)
    def __str__(self):
        return self.carousel_name

class Photo(models.Model):
    carousel = models.ForeignKey(Carousel, on_delete=models.CASCADE)
    image =models.ImageField(upload_to="carousel_image", height_field=None, width_field=None, max_length=None)

然后在你的 Views.py 中:

from django.views.generic import DetailView
from .models import Carousel, Photo
class CarouselView(DetailView):
    model = Carousel
    template_name = 'carousel.html'

现在在你的 admin.py 中:

from .models import Carousel, Photo
class PhotoInline(admin.TabularInline):
    model= Photo
    extra= 3

class CarouselAdmin(admin.ModelAdmin):
    inlines=[PhotoInline]
admin.site.register(Carousel, CarouselAdmin)

现在让您的 urlpattern 获取 pk 作为 kwargs 以便像这样加载图像:

urlpatterns = [
    path('<int:pk>/', CarouselView.as_view())
]

最后在您的模板中: 呈现为:

 <!-- The slideshow -->
  <div class="carousel-inner">
    {% for photo in carousel.photo_set.all %}
    <div class="carousel-item active">
      <img src="{{ photo.image.url }}" alt="Image {{forloop.counter}}" width="1100" height="500">
    </div>
    {% endfor %}
  </div>

现在画廊应该可以按照您的预期工作了。 希望你得到你正在寻找的东西。?

【讨论】:

  • 感谢您的建议。我可以将它的 sn-ps 用于最终产品。我唯一不明白或看不到的是有没有办法或者我可以创建一个轮播文件夹,即意大利在其中上传文件。在有关意大利的帖子中使用它。然后,创建一个名为西班牙的文件夹,将要在该文件夹中上传的文件并在另一个或多个帖子中使用该文件夹。还有一种方法可以从某个文件夹中选择要使用的照片
  • 不确定文件夹,但您可以创建不同的轮播项目,您可以存储与该轮播相关的不同照片并使用其主键访问它。
猜你喜欢
  • 2012-10-15
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 2011-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多