Сделал по второму варианту, теперь другая проблема - в валидации формы.
Если вывожу всю форму на страницу (при этом заполняю форму из базы
form = SocWorkerForm(agency=agency, instance=socworker)
- данные сохраняются в базу, а если вывожу лишь одно требуемое поле и пытаюсь заполнить форму из базы - Ошибка валидации
form = SocWorkerForm(request.POST, agency=agency, instance=socworker)
Как быть?
Модели:
class SocWorker(SocWorker_detailed_inf):
data = models.CharField('данные', max_length=10, blank=True)
data2 = models.CharField('данные2', max_length=11, blank=True)
class SocWorker_detailed_inf(models.Model):
data3 = models.CharField('данные3', max_length=10, blank=True)
data4 = models.CharField('данные4', max_length=11, blank=True)
class Meta:
abstract = True
Использую одну форму:
class SocWorkerForm(ModelForm):
class Meta:
model = SocWorker
exclude = ('agency', 'atime', 'details_id', 'socworker_id')
def __init__(self, *args, **kwargs):
self.agency = kwargs.pop('agency')
super(SocWorkerForm, self).__init__(*args, **kwargs)
self.fields['department'].queryset = Department.objects.filter(agency=self.agency)
view файл
socworker = get_object_or_404(SocWorker, pk=soc_id)
alphabet = socworker.surname[:1] # первая буква фамилии
if request.method == 'POST':
#request.POST.__setitem__('alphabet', alphabet)
form = SocWorkerForm(request.POST, agency=agency, instance=socworker)
if form.is_valid():
socworker = form.save()
action = 'success'
return HttpResponseRedirect('/agency/socworker/%d_detailed/' % socworker.id)
else:
action = 'errors'
else:
action = 'new'
form = SocWorkerForm(agency=agency, instance=socworker)