从正在创建的记录创建时的默认django字段值

时间:2014-01-18 16:32:42

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

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

没关系。

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

当用户看到下一个表单时,它们将具有您预先填充的输入值。这个逻辑可能应该采用自定义表单方法(无论哪种形式管理用户名)。

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

需要考虑的其他事项:

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