Форум сайта python.su
Подскажите
Допустим есть модели
class SocWorker(models.Modelr): data = models.CharField('данные', max_length=10, blank=True) data2 = models.CharField('данные2', max_length=11, blank=True)
class SocWorker_detailed_inf(SocWorker): data3 = models.CharField('данные3', max_length=10, blank=True) data4 = models.CharField('данные4', max_length=11, blank=True)
socworker = get_object_or_404(SocWorker_detailed_inf, pk=soc_id)
Отредактировано easthy (Май 27, 2013 21:43:34)
Офлайн
Может стоить попробовать
class SocWorker(models.Modelr): data = models.CharField('данные', max_length=10, blank=True) data2 = models.CharField('данные2', max_length=11, blank=True) class SocWorker_detailed_inf(SocWorker): data3 = models.CharField('данные3', max_length=10, blank=True) data4 = models.CharField('данные4', max_length=11, blank=True) class Meta: abstract = True
class SocWorkerDetailedForm(ModelForm): class Meta: model = SocWorker_detailed_inf
Отредактировано easthy (Май 27, 2013 21:54:27)
Офлайн
Сделал по второму варианту, теперь другая проблема - в валидации формы.
Если вывожу всю форму на страницу (при этом заполняю форму из базы
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)
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)
Отредактировано easthy (Май 28, 2013 11:11:52)
Офлайн