当前位置:  开发笔记 > 后端 > 正文

每个型号多个图像

如何解决《每个型号多个图像》经验,为你挑选了2个好方法。

我正在Django写一个简单的房地产列表应用程序.每个属性需要具有可变数量的图像.图像需要具有可编辑的顺序.我需要让管理员用户证明.

那说,我的选择是什么?

    是否有我不知道的ImageList字段?

    有这样的应用程序django.contrib.comments对我有用吗?

    如果我必须自己编写,我将如何使管理员方面体面?我想象的东西比ImageField提供的东西要漂亮得多,还有一些重新排序的拖延.但是我在编写管理页面时非常熟悉=(

Van Gale.. 117

    变量列表,也称为多对一关系,通常通过为多个模型创建单独的模型来处理,在该模型中,使用ForeignKey到"one".

    在django.contrib中没有这样的应用程序,但是你可以使用几个外部项目,例如django-photologue甚至支持在管理员中查看图像.

    管理站点不能成为"用户证明",只能由受信任的用户使用.鉴于此,使您的管理网站体面的方法是为您的属性定义ModelAdmin,然后内联照片(内联文档).

所以,为了给你一些快速的草稿,一切看起来都像这样:

# models.py
class Property(models.Model):
    address = models.TextField()
    ...

class PropertyImage(models.Model):
    property = models.ForeignKey(Property, related_name='images')
    image = models.ImageField()

和:

# admin.py
class PropertyImageInline(admin.TabularInline):
    model = PropertyImage
    extra = 3

class PropertyAdmin(admin.ModelAdmin):
    inlines = [ PropertyImageInline, ]

admin.site.register(Property, PropertyAdmin)

在ForeignKey上使用related_name参数的原因是您的查询更具可读性,例如在这种情况下,您可以在视图中执行以下操作:

property = Property.objects.get(pk=1)
image_list = property.images.all()

编辑:忘记提及,然后您可以使用Simon Willison的代码段使用jQuery UI拖放可订购内联在管理中实现拖放排序



1> Van Gale..:

    变量列表,也称为多对一关系,通常通过为多个模型创建单独的模型来处理,在该模型中,使用ForeignKey到"one".

    在django.contrib中没有这样的应用程序,但是你可以使用几个外部项目,例如django-photologue甚至支持在管理员中查看图像.

    管理站点不能成为"用户证明",只能由受信任的用户使用.鉴于此,使您的管理网站体面的方法是为您的属性定义ModelAdmin,然后内联照片(内联文档).

所以,为了给你一些快速的草稿,一切看起来都像这样:

# models.py
class Property(models.Model):
    address = models.TextField()
    ...

class PropertyImage(models.Model):
    property = models.ForeignKey(Property, related_name='images')
    image = models.ImageField()

和:

# admin.py
class PropertyImageInline(admin.TabularInline):
    model = PropertyImage
    extra = 3

class PropertyAdmin(admin.ModelAdmin):
    inlines = [ PropertyImageInline, ]

admin.site.register(Property, PropertyAdmin)

在ForeignKey上使用related_name参数的原因是您的查询更具可读性,例如在这种情况下,您可以在视图中执行以下操作:

property = Property.objects.get(pk=1)
image_list = property.images.all()

编辑:忘记提及,然后您可以使用Simon Willison的代码段使用jQuery UI拖放可订购内联在管理中实现拖放排序



2> Javier..:

将具有ForeignKey的Image模型写入Property模型.很可能,您将拥有属于图像的其他字段,而不是属性.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有