【发布时间】:2012-06-10 20:27:10
【问题描述】:
我在 Django 中遇到了一个奇怪的问题,我认为这可能是因为我没有正确理解基于类的视图是如何工作的。
基本上我有一个 ListView 和一个 FormView。一是列出对象,二是编辑。
在浏览器中,如果我从列表视图导航到现有对象的表单视图,我会得到预期的结果:表单字段填充了预期值。
相同的表单视图用于呈现一个空白表单,用户可以在其中创建对象。
如果我从现有对象的表单导航到新对象的表单视图或列表视图,然后导航到新对象的表单视图,则初始(即 CBV 的 self.initial)会预先填充来自现有对象的信息访问过。
显然,我希望 self.initial 在新的获取请求开始时为空白。
我的理解是每个请求都会生成一个基于类的视图的新实例。初始如何跨请求结转? 我是根据一些调试得出这个结论的。下面的 get_initial() 中的相关行。
def get_initial(self, **kwargs):
initial = super(M_EditNewsletterView, self).get_initial(**kwargs)
fs_logger.debug('initial immediately after super -> %s' % initial)
SO 建议这是相似的,但我不明白赞成票的答案。 Django(trunk) and class based generic views: one form's initial data appearing in another one's
谁能帮我解释一下这是怎么回事?
【问题讨论】:
标签: python django-forms django-views