def my_vIEw(request): new_entry = MyModel(name='a') form = MyModelForm(instance=new_entry) ...
我想用modelformset做类似的事情.这样的事情是理想的:
def my_vIEw(request): MyFormSet = modelformset_factory(MyModel,form=MyModelForm) new_entrIEs = [MyModel(name='a'),MyModel(name='b')] formset = MyFormSet(instances=new_entrIEs) # off course this does not work ...
由于项目尚未存储在数据库中,因此无法使用查询集设置实例.如果我想使用初始我必须声明表单中的字段,这是不理想的,似乎有点Hacky.
有关如何在modelformset中设置每个模型的实例的任何建议吗?
解决方法 好的,我想我找到了解决方案.class FormSetWithInstances(BaseFormSet): def __init__(self,*args,**kwargs): self.instances = kwargs.pop('instances') super(FormSetWithInstances,self).__init__(*args,**kwargs) def get_form_kwargs(self,index): form_kwargs = super(FormSetWithInstances,self).get_form_kwargs(index) if index < len(self.instances): form_kwargs['instance'] = self.instances[index] return form_kwargs
使用此modelformsets或inlinemodelformsets时要小心,因为查询集将覆盖您设置的实例.
总结以上是内存溢出为你收集整理的在Django模型formset中设置每个表单的实例全部内容,希望文章能够帮你解决在Django模型formset中设置每个表单的实例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)