Форум сайта python.su
Добрый день!
Подскажите, пожалуйста, новичку как можно использовать дополнительные поля в админке при сохранении объекта?
# admin.py
from models import Test
from django import forms
from django.contrib import admin
from django.http import QueryDict
class TestAdminForm(forms.ModelForm):
xywh = forms.CharField(required=False)
# поле, значение которого нужно получить при сохранении модели
def __init__(self, *a, **kw):
super(TestAdminForm, self).__init__(*a, **kw)
if a:
for item in a:
if isinstance(item, QueryDict):
self.xywh = item.get('xywh', None)
# тут удалось его отловить, но хотелось бы в методе save модели
break
class Meta:
model = Test
class TestAdmin(admin.ModelAdmin):
form = TestAdminForm
admin.site.register(Test, TestAdmin)
Отредактировано (Дек. 23, 2011 06:01:54)
Офлайн
Если я вас правильно понял, то можно переопределить метод save, примерно так:
def save(self, commit=True):
model = super(TestAdminForm, self).save(commit=False)
model.xywh = self.cleaned_data['xywh']
if commit:
model.save()
return model
Отредактировано (Дек. 23, 2011 16:28:20)
Офлайн
magnet85, большое спасибо!
Делал почти так же, но вываливалась ошибка что, мол, у формы нет метода save. Теперь, кажется, понял ошибку.
Отредактировано (Дек. 23, 2011 20:32:44)
Офлайн