【问题标题】:Setting Initial Field in Django在 Django 中设置初始字段
【发布时间】:2018-12-03 07:08:47
【问题描述】:

我有一个模型表单,当我从视图调用表单时,我试图将初始值传递给其中一个字段。

我的观点如下:

threadform = ThreadForm(text="hello")

模型形式如下:

class ThreadForm(ModelForm):

class Meta:
    model = Thread
    fields = ['title']

def __init__ (self,*args, **kwargs):
    self.fields['title'].initial = kwargs.pop("text")
    super (ThreadForm, self).__init__(*args, **kwargs)

这将给出错误“ThreadForm” has no attribute 'fields'。

如果我反转超级调用然后得到“init() got an unexpected keyword argument 'text'”。

请有人帮忙,因为我找不到任何关于正确方法的信息,因为其他人似乎在设置硬编码的初始值,但我的是动态的,因为我想用数据替换文字“你好”来自模型。

【问题讨论】:

  • 您现在可能已经解决了这个问题,但在我看来,您应该只切换最后两行。在尝试根据 kwargs 设置 title 的初始值之前从 super 继承
  • 谢谢,我想就是这样。一年多前我问过这个问题,此后我的 Django 和 Python 技能有了很大的提高。你说的很有道理。我最近制作了一些 Django 应用程序,现在使用它们的表单好多了。谢谢你的回答:-)

标签: django django-models django-forms


【解决方案1】:
threadform = ThreadForm(initial={'fieldname': value})

您可以这样做,而无需表单中的构造函数

【讨论】:

  • 我会尝试,但我想我已经尝试过了,但它不起作用,但最初我将表单绑定到请求。我会告诉你它是否有效。
猜你喜欢
  • 1970-01-01
  • 2010-10-23
  • 2014-04-18
  • 2019-03-20
  • 2018-11-19
  • 2015-04-16
  • 2012-03-29
  • 2018-08-21
  • 1970-01-01
相关资源
最近更新 更多