Django管理员:如何在ModelAdmin中遍历表单属性

2024-09-24 22:32:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用django1.11.10和python3.6;我需要在admin中迭代form值。怎么做?在

class ServerForm(forms.ModelForm):

    class Meta:
        model = Server

    def clean(self):
        setattr(self, 'field1', 'value1')
        setattr(self, 'field2', 'value2')



class ServerAdmin(admin.ModelAdmin):
    form = ServerForm

    def save_model(self, request, obj, form, change):

        # this works
        # but how to iterate form?

        obj.field1 = form.field1
        obj.field2 = form.field2

        # AttributeError: 'ServerForm' object has no attribute 'items'
        for key, value in form.items():
            setattr(obj, key, value)

        super(ServerAdmin, self).save_model(request, obj, form, change)

Tags: selfformobjmodeladminrequestsavedef
2条回答

迭代form对象的属性与迭代任何其他python对象的属性相同。使用dir()。见here

不清楚为什么要在clean方法中对表单设置属性:

class ServerForm(forms.ModelForm):

    class Meta:
        model = Server

    def clean(self):
        setattr(self, 'field1', 'value1')
        setattr(self, 'field2', 'value2')

如果在窗体实例上设置属性,则不必在save_model方法中进行设置:

^{pr2}$

相关问题 更多 >