【问题标题】:django, extending the add/change form at the admindjango,在管理员处扩展添加/更改表单
【发布时间】:2009-08-31 18:11:17
【问题描述】:

我想扩展 Django 的管理面板,在其中添加/更改特定对象,比如 Foo。 我已经做了很多研究,并在旧版本djangobook找到了讨论这个的部分。

我在我的模板目录中做了一个 admin/myapp/foo/change_list.html 并做了一些经验,比如添加了一些 html,效果很好。

这就是问题开始的地方,我需要调整此管理显示的视图(不覆盖整个内容,而只是扩展它),以便在 change_list.html 处使用一个小的 GET/POST 表单,我想执行特定操作,例如:

假设我有 2 个对象 Foo 和 Bar:

class Bar(models.Model):
  bar_text = models.TextField( )


class Foo(models.Model):
  name = models.TextField( )
  my_bar = models.models.ForeignKey( Bar)

添加新 Foo 时的常规管理界面,我可以选择一个 my_bar示例)为所有 Bar 对象连接。所以保存后我会有几个 Foo 对象,它们具有相同的“名称”字段,每个对象都有不同的 Bar 连接

【问题讨论】:

    标签: django django-models


    【解决方案1】:

    如果您知道如何扩展管理员(我假设从您的帖子中),您只需要覆盖表单的 save() 方法,因此如果选中该复选框,它会更新所有 foos。

    def save(self):
        if (self.cleaned_data['save_to_all']):
            foos = Foo.objects.all()
            for obj in foos:
                 obj.name = self.cleaned_data['name']
                 obj.save()
        super(FooForm, self).save() 
    

    我是不是很明白你需要什么或者我错过了什么?

    【讨论】: