如何通过formset修改现有对象

时间:2016-04-18 11:59:06

标签: python django django-models

我有这样的产品型号:

class Product(models.Model):
   title = models.TextField(max_length=200)

和像这样的图像模型:

class Image(models.Model):
    product = models.ForeignKey(Product)
    image = models.ImageField(upload_to=....)

现在,我可以通过formset添加具有多个图像的产品,但是我应该怎么做才能修改现有产品。在服务器端代码中,我需要知道要修改哪个图像,新添加哪个图像,删除哪个图像。当然,我可以通过正常的方式来做,就像删除图像一样,我会将它的名称更改为" delete-img_id"通过javascript,如果我修改了一个图像,我可以将其名称更改为" modify-img_id",然后在django服务器端检查它并正确操作处理它们,如下所示:

def check_img(name):
   operate = name.split("-")[0]
   img_id = name.slipt("-")[1]
   if operate == "modify": modify_img(img_id)

1 个答案:

答案 0 :(得分:0)

您可以覆盖ModelAdmin的save_formset方法

def save_formset(self, request, form, formset, change):
    if formset and formset.has_changed():
        quiz_obj = formset.save(commit=False)[0].product
        # todo 
    return super(ProductAdmin, self).save_formset(request, form, formset, change)