0
我想生成一个“更新formset”来一次更新大量实例,其中更新的字段在数据库中为空(在呈现时更新formset),但使用已填写的字段“建议”。使用modelformset_factory预填单个formset表单中的数据
我的模型放在这里:
class Event(models.Model):
plan_start_time = models.TimeField()
actual_start_time = models.TimeField(blank=True, null=True)
所以我想在这里actual_start_time
是在暗示plan_start_time
为预充(初始)值的表。
我的尝试:
class EventForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(EventForm, self).__init__(*args, **kwargs)
self.fields['actual_start_time'].initial = self.fields['plan_start_time'] # doesn't work
self.fields['actual_start_time'].initial = "08:00" # doesn't work either
self.fields['actual_start_time'].initial = datetime.time(hour=8) # doesn't work...
self.initial['actual_start_time'] = self.fields['plan_start_time'] # this puts '<django.forms.fields.TimeField object at 0x067BA330>' in the field... not its value
class Meta:
model = Event
fields = ('plan_start_time', 'actual_start_time',)
# Specifying form to use
MyFormSet = modelformset_factory(Event, extra=0, fields=('plan_start_time', 'actual_start_time'), form=EventForm)
我想这个问题归结为:我可以访问形式的__init__()
表单域值? 如果不是,这个问题的解决方法是什么?
作为一种替代方法,我正在研究将plan_start_time
作为隐藏字段,然后使用Javascript将其复制到表格中每个字段的actual_start_time
字段。但是如果没有Django客户端方法来做到这一点,我会感到惊讶,所以现在想避免JS。
使用Django 1.8。
http://stackoverflow.com/questions/1897756/different-initial-data-for-each-form-in-a-django-formset –
谢谢@ShangWang,我看过那篇文章,但似乎没有涵盖我的用例。我想要预先填充依赖于另一个字段的数据。此外,我想知道为什么上述不起作用。 – SaeX