Django admin中的多个Model实例条目保存

时间:2015-10-16 06:52:20

标签: javascript python django heroku uwsgi

我正在使用带有4个进程的uwsgi在Heroku上运行django网站。

通常,每当我点击save and continue editing时,我会得到同一个实例的多个条目,在创建时间间隔1-2秒。

这背后的问题可能是什么?我甚至试图通过使用javascript禁用按钮来防止多次点击。

此外,该模型已将其保存覆盖。虽然我认为这没有任何区别。

Venue ModelAdmin - 简单的计算并保存在这里

def save_model(self, request, obj, form, change):
        obj.checked_by = request.user
        if not obj.created_by:
            obj.created_by = request.user.username
        spaces = obj.venuetospacetypemapper_set.all().values('min_seating_capacity',  'max_seating_capacity')
        obj.min_seating_capacity = min([space.get('min_seating_capacity') or 0 for space in spaces] or [0])
        obj.max_seating_capacity = sum([space.get('max_seating_capacity') or 0 for space in spaces] or [0]) 
        obj.save()

由于Venue admin中有许多内联,只有 VenueMedia模型已保存已覆盖:

def save(self, *args, **kwargs):
        start=datetime.datetime.now()
        print "starting save in admin.save", start
        update_image = True
        if self.id: # if updating record, then check if image path has changed
            update_image = False
            orig = VenueMedia.objects.get(id=self.id)
            if self.url != orig.url:
                update_image = True

        print "in save in admin.save, seconds passed=", (datetime.datetime.now()-start).seconds
        if update_image:
            print "in update_image in admin.save, seconds passed=", (datetime.datetime.now()-start).seconds
            image = Img.open(StringIO.StringIO(self.url.read()))
            orignal_ratio = float(image.size[0])/image.size[1]
            new_height = int(round(orignal_ratio * 171))
            image.thumbnail((new_height,171), Img.ANTIALIAS)
            output = StringIO.StringIO()
            image.save(output, format='JPEG', quality=75)
            output.seek(0)
            self.thumbnail_url = InMemoryUploadedFile(output, 'ImageField', "%s" % str(self.url.name), 'image/jpeg', output.len, None)

            if not self.venueid.thumb_image_path:
                self.venueid.thumb_image_path = self.thumbnail_url
                self.venueid.save()
        print "before calling django.save in admin.save, seconds passed=", (datetime.datetime.now()-start).seconds
        super(VenueMedia, self).save(*args, **kwargs)

0 个答案:

没有答案