每个型号有多个图像

我正在Django写一个简单的房地产上市应用程序。 每个属性都需要有可变数量的图像。 图像需要有可编辑的顺序。 我需要使pipe理员用户certificate。

所以说,我有什么select?

  1. 有没有我不知道的ImageList字段?

  2. 是否有像django.contrib.comments这样的应用程序,为我做的工作?

  3. 如果我必须自己写,那么我怎样才能使pipe理方面得体呢? 我想像的东西比ImageField提供的东西要轻松得多,有些拖放可以重新sorting。 但我是一个完整的写作pipe理页面=(

  1. variables列表(也称为多对一关系)通常通过为许多模型创build单独的模型来处理,并且在该模型中使用ForeignKey作为“one”。

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

  3. 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扩展的支持。 我希望在几天之内我会有解决方法。 🙂