2009-08-31 5 views
1

Я хочу расширить панель администратора Django, где добавление/изменение происходит для определенного объекта, скажем Foo. Я уже много сделал для исследования и нашел часть, обсуждая это в старой версии djangobook.django, расширяющий форму добавления/изменения у администратора

Я создал администратор/myapp/foo/change_list.html в моем каталоге шаблонов и сделал некоторый опыт, например, добавив некоторый html, и он работает хорошо.

И вот где начинается проблема, мне нужно настроить вид этого админ-дисплея (не перекрывая все это, а просто расширяя его), так что с небольшой формой GET/POST в файле change_list.html я хочу делать конкретные действия, такие как:

Скажем, у меня есть 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 ForeignKey, как это должно быть, теперь я хочу, чтобы в конце страницы была добавлена ​​отметка «добавить ко всем», которая делает тот же вход (имя для моего примера) подключенным для всех объектов Bar. Поэтому после сохранения у меня будет несколько объектов Foo, которые имеют одно и то же поле «имя», и каждый из них имеет другое соединение с баром

ответ

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

Я хорошо понял, что вам нужно, или я пропустил sth?