每个型号有多个图像
我正在Django写一个简单的房地产上市应用程序。 每个属性都需要有可变数量的图像。 图像需要有可编辑的顺序。 我需要使pipe理员用户certificate。
所以说,我有什么select?
-
有没有我不知道的ImageList字段?
-
是否有像
django.contrib.comments
这样的应用程序,为我做的工作? -
如果我必须自己写,那么我怎样才能使pipe理方面得体呢? 我想像的东西比ImageField提供的东西要轻松得多,有些拖放可以重新sorting。 但我是一个完整的写作pipe理页面=(
-
variables列表(也称为多对一关系)通常通过为许多模型创build单独的模型来处理,并且在该模型中使用ForeignKey作为“one”。
-
在django.contrib中没有像这样的应用程序,但有几个外部项目可以使用,例如django-photologue甚至有一些支持查看pipe理中的图像。
-
pipe理网站不能做“用户certificate”,只能由受信任的用户使用。 鉴于此,使您的pipe理网站体面的方法是为您的财产定义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, ]
在ForeignKey上使用related_name参数的原因是让你的查询更具可读性,例如,在这种情况下,你可以在你的视图中做这样的事情:
property = Property.objects.get(pk=1) image_list = property.images.all()
编辑:忘了提及,然后你可以实现在pipe理使用西蒙·威利森的片段的拖放式订购使用jQuery UI拖放的Orderable内联
将一个具有ForeignKey的图像模型写入到您的Property模型中。 很可能,您将拥有属于图片的其他字段,而不是属性。
我目前正在做同样的事情,而且我面临同样的问题。
经过一段时间的研究,我决定使用django-imaging 。 它具有良好的Ajaxfunction,可以在模型插入页面的同一页面上传图像,并且可以编辑。 它唯一缺乏的是对非JPEG扩展的支持。 我希望在几天之内我会有解决方法。 🙂