【问题标题】:Default django field value when creating from record that is being created从正在创建的记录创建时的默认 django 字段值
【发布时间】:2014-02-08 00:22:05
【问题描述】:

我有People 应用程序。我有 Person 具有 username 字段的模型。当我添加一个人但该人还没有帐户时,我单击 username 字段旁边的小加号,然后我会看到一个新用户表单。

没关系。

现在我想以这种方式创建用户:用户名应该是 {firstname}.{lastname}[.{serial}] 的形式,因为 John Smith 的用户名是 john.smith,另一个 John Smith 的用户名是 john.smith.1

如何将名字和姓氏传递给新用户表单?另外:如何检查是否有其他用户使用该用户名并附加序列号?

谢谢

【问题讨论】:

  • 我对模型之间的关系有点困惑。请发布您的模型代码(以及任何相关的表单代码),以便我们了解这些模型之间的关系。
  • 如果我下面的回答没有帮助,请告诉我,以便我修改。

标签: django django-models django-forms django-admin django-authentication


【解决方案1】:

如果在 Person 表单中输入(但尚未提交)名字和姓氏,并且您希望这些值显示在新的用户表单视图中,那么您必须:

a) 当用户点击添加按钮(“加号按钮”)时,使用 JavaScript 获取名字和姓氏,然后
b) 将这些值传递到动态创建 {firstname}.{lastname}.[serial] 的 custom view,然后
c) 将该值赋给 form.fields['username'].initial

当用户看到下一个表单时,他们会预先填充您输入的值。这个逻辑可能应该放在自定义表单方法中(无论哪个表单管理用户名)。

此策略带来了您必须解决的其他问题:
1) 如果用户在提交之前更改了原始 Person 表单中的名字和姓氏怎么办? (下面的#2 可能会解决这个问题)
2)每次更改名字或姓氏时,您都必须更新另一个模型上的用户名

其他需要考虑的事项:

您可以使用自定义用户模型(docstutorial)来执行此操作,并将这些名字和姓氏放在同一个模型中,这样可以消除自定义视图的创建,允许您在一页,并使其更容易同步。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2022-11-16
    • 1970-01-01
    • 2014-03-02
    • 2015-08-17
    • 2012-06-29
    相关资源
    最近更新 更多