У меня есть общий CreateView, который заполняет форму с некоторыми значениями по умолчанию вместе с значением первичного ключа его родительского объекта. Форма заполнена правильно, но при отправке она бросает KeyError для lumberload_id.Ошибка Django при отправке формы при переопределении Get_Initial в CreateView
Отладка показывает, что он переопределяет метод get_initial как для GET, так и для POST, что означает, что он пытается получить доступ к объекту lumberload, который больше не существует при отправке формы.
Мне кажется, что нет необходимости get_initial для почты, поскольку он выполнил свою работу в GET. Есть ли способ пропустить переопределение get_initial в POST? Я потерпел неудачу, пытаясь обертыванием переопределения:
if request.method == 'GET':
URL:
url(r'^lumber_load/(?P<pk>\d+)/addlog/$', views.LogDataCreate.as_view(), name='log-data-add'),
Вид: класса LogDataCreate (CreateView): form_class = LogDataForm модели = LogData
# Set created_by to the current user.
def form_valid(self, form):
form.instance.created_by = self.request.user
return super(LogDataCreate, self).form_valid(form)
# Set initial values of unit fields.
def get_initial(self):
return { 'lumberload': self.kwargs['lumberload_id'],'diameter_unit': '3', 'length_unit': '1' }
# Return to the load list when done creating a plot.
def get_success_url(self):
return reverse('geoapp:lumber_load_list')
Модель:
class LogData(models.Model):
logdata_id = models.AutoField(primary_key=True)
lumberload = models.ForeignKey('LumberLoad', blank=True, null=True)
butt_diameter = models.DecimalField(null=True, max_digits=4, decimal_places=1, blank=True)
diameter_unit = models.ForeignKey('UnitLengthType', related_name='diameter_unit', null=True)
log_length = models.DecimalField(null=True, max_digits=3, decimal_places=1, blank=True)
length_unit = models.ForeignKey('UnitLengthType', related_name='length_unit', null=True)
speciestreetype = models.ForeignKey('SpeciesTreeType', blank=True, null=True)
recorded_date = models.DateField(blank=True, null=True)
created_by = models.ForeignKey(User)
class Meta:
db_table = 'log_data'
ordering = ["logdata_id"]
def __unicode__(self):
return unicode(self.logdata_id)
** Я также попытался: ** определение функции отправки (само, * ARGS ** kwargs): self.lumberLoad = get_object_or_404 (LumberLoad, pk = kwargs ['lumberload_id']) return super (LogDataCreate, self) .dispatch (* args, ** kwargs) # Установить начальные значения полей устройства. def get_initial (self): # return {'lumberload': self.kwargs ['lumberload_id'], 'diameter_unit': '3', 'length_unit': '1'} return {'lumberload': self.lumberLoad .lumberload_id, 'diameter_unit': '3', 'length_unit': '1'} ' – akthor