我正在使用django-registration软件包创建一个django网站。我希望用户注册他们的电子邮件并且没有用户名,这样我就可以拥有一个带有实际名称的界面(比如在Facebook上),并通过他们的电子邮件跟踪它们。
我将需要一个用户个人资料,并计划稍后使用oneToOne字段扩展用户模型,但目前我不确定如何将他们的电子邮件用作用户名。我想我可以简单地询问用户他们的电子邮件,并将其存储为用户名,这将是一个简单的修复。但是,它需要我修改所有表单,并在数据库中创建基本上重复的列(email = username)。
这个问题真的是开放式的,我想知道是否有一种简单的方法来改变项目中的用户模型。我已经阅读了有关User(AbstractUser)类的文档,但只有在我们刚刚启动项目时这似乎才有用。
谢谢,任何帮助都将不胜感激。
答案 0 :(得分:1)
您可以通过扩展AbstractBaseUser来编写自定义用户类,并将您的电子邮件字段声明为USERNAME_FIELD,如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
XElement art = doc.Descendants("art").Where(x => (string)x.Attribute("code") == "0356").FirstOrDefault();
art.SetAttributeValue("instock", "456");
doc.Save(FILENAME);
}
}
}
另一个不扩展AbstractBaseUser的工作可以在apps.py中导入用户模型并设置USERNAME_FIELD,如:
USERNAME_FIELD = 'email'