5

我需要在管理员中覆盖内联的保存方法。保存照片时,我需要将用户 ID 添加到 DB 列。我无法在模型中制作它,因为那里没有请求数据。我怎样才能在管理员中做到这一点,以某种方式获得 nad set user id?

4

2 回答 2

18

我相信 ModelAdmin 上的 save_formset 方法是您应该使用的:

class ArticleAdmin(admin.ModelAdmin):
    def save_formset(self, request, form, formset, change):
        instances = formset.save(commit=False)
        for instance in instances:
            instance.user = request.user
            instance.save()
        formset.save_m2m()

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_formset

于 2011-08-08T22:27:21.410 回答
1

我对 django (1.8) 比较陌生,并且使用了上面的覆盖:

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()

即在保存实例和表单之前添加它,但是当用户输入2行时,它总是保存最后一个cleaned_data ['enum_value_en']。

于 2016-08-03T15:18:42.177 回答