Django admin - how to save inlines?

前端 未结 2 1142
执笔经年
执笔经年 2021-01-06 00:29

I need to override save method of inlines in admin. While saving photos, I need to add user id to DB column. I cant make it in model because there is no request data there.

2条回答
  •  佛祖请我去吃肉
    2021-01-06 00:38

    I'm relatively new to django (1.8) and using the above override:

    def save_formset(self, request, form, formset, change):
        instances = formset.save(commit=False)  # gets instance from memory and add to it before saving it
        for obj in formset.deleted_objects:
            obj.delete()
        for instance in instances:
            for form in formset:  # cleaned_data is only available on the form, so you have to iterate over formset
                instance.modified_by = request.user
                instance.created_by = request.user
                instance.lowercase_enum_value_en = form.cleaned_data['enum_value_en'].lower()
                instance.save()
        formset.save_m2m()
    

    i.e. adding to it before saving the instance and form, however when the user enters 2 lines it always saves the last cleaned_data['enum_value_en'].

提交回复
热议问题