django中自定义用户的登录表单

时间:2014-08-20 17:52:40

标签: python django django-models

我创建了一个自定义用户注册类。

class SignUp(models.Model):
    userId = models.CharField(max_length=8, blank=False, unique=True)
    Name = models.CharField(max_length=200)
    VehicleNumber= models.CharField(max_length=12)
    ContactNum = models.IntegerField(default=0)
    def __unicode__(self):
        return smart_unicode(self.Name)

我用它来创建一个注册表单。现在,我没有办法创建用户登录。注意:我无法使用django内置用户,因为他们没有图像字段。

2 个答案:

答案 0 :(得分:0)

您可以使用和扩展内置模型User。最短的路径是

from django.contrib.auth.models import User
from django.db import models

class UserWithPhoto(User):
    image = models.ImageField()

但更好的做法是使用用户个人资料,您可以在以下位置阅读:User authentication in Django

您可以在Django user profile和此处Extending the User model with custom fields in Django了解相关信息。

为什么直接扩展用户模型的用户档案更好?

如果您扩展用户模型,您将对所有用户应用更改。考虑一下,你可能有Administrators,Developers,Reviwers,甚至是Guest,所有这些都可能有其他人不喜欢的字段,所以每个字段的不同配置文件比子类User更好。每一个,甚至最差的都会为所有类型的用户创建一个包含所有字段的单个类(只考虑它会受到伤害)。

答案 1 :(得分:0)

您可以通过添加OneToOneField来扩展内置的django用户。

YourCustomUser(models.Model):
    user = models.OneToOneField(User,related_name='profile')
    image = models.ImageField()
    //put here your others attributes

如果您有YourCustomUser实例并且想要访问User内置实例

your_custom_instance.user

如果您有User内置实例并想要检索e.i图像

user.profile.image
相关问题