django,在管理员处扩展添加/更改表单

时间:2009-08-31 18:11:18

标签: django django-models

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

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

这就是问题开始的地方,我需要调整这个管理显示的视图(没有覆盖整个事情,只是扩展它)所以,在change_list.html上有一个小的GET / POST表单,我想要做一个具体的行动,如:

说我有两个对象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 foreignKey,现在我想要在页面末尾的“添加到所有”的复选框,这会产生相同的输入(我的名字)示例)连接所有Bar对象。因此,在保存之后,我将有几个具有相同“名称”字段的Foo对象,每个对象具有不同的条形连接

1 个答案:

答案 0 :(得分:0)

如果您知道如何扩展管理员(我假设您的帖子),您只需覆盖表单的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() 

我是否理解你需要什么,或者我错过了什么?