我正在尝试确保auth User模型的名字和姓氏字段不是可选的,但我不确定如何更改它。 我不能使用子类,因为我必须使用身份验证系统。

我能想到的两个解决方案是:1)将名称放在用户配置文件中,但是有一个我无法正确使用的字段有点傻。 2)以表格而不是模型进行验证。 我认为这不符合django的理念......

出于某种原因,我似乎无法在网上找到这样的方式,所以任何帮助都表示赞赏。 我原以为这会是一个很受欢迎的问题。

干杯,杜兰德

===============>>#1 票数:2 已采纳

我肯定会在表格上进行验证。 如果您愿意,您甚至可以在管理员中进行更多表单验证。

===============>>#2 票数:0

感谢Mbuso的建议。 这是我对那些感兴趣的人的全面实施。 在查看源代码之前,让我们看看它的样子: 管理Web屏幕截图

我已经实现了一个配置文件模型,但没有它就可以正常工作。

from django.core.exceptions import ValidationError
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserChangeForm
from django.contrib.auth.models import User
from apps.profiles.models import Profile


# Define an inline admin descriptor for Profile model
# which acts a bit like a singleton
class UserProfileInline(admin.StackedInline):
    model = Profile
    can_delete = False
    verbose_name_plural = 'profile'


class MyUserChangeForm(UserChangeForm):
    def clean_first_name(self):
        if self.cleaned_data["first_name"].strip() == '':
            raise ValidationError("First name is required.")
        return self.cleaned_data["first_name"]

    def clean_last_name(self):
        if self.cleaned_data["last_name"].strip() == '':
            raise ValidationError("Last name is required.")
        return self.cleaned_data["last_name"]


# Define a new User admin
class MyUserAdmin(UserAdmin):
    form = MyUserChangeForm
    inlines = UserProfileInline,


admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)

注意:如果您实现了配置文件模型,建议使用UserProfile作为名称,因为这是文档中的内容并且似乎是标准(此部分是在我开始处理项目之前开发的)。 如果您使用的是Django 1.5或更高版本,请同时跳过UserProfile并扩展User模型。

===============>>#3 票数:0

扩展基本用户模型的Django方式是通过用户配置文件:请参阅“ 存储有关用户的其他信息 ”。

如果它不符合您的需求,django.contrib.auth只是一个Django应用程序,我会简单地分叉它。 只要您遵守原始界面,我认为您将摆脱困境。

另一个选项是Pinax - 它内置了OpenId支持,您可以将它与您自己的openid提供程序一起使用。 OpenId本机支持是我在Django中真正想念的电池

  ask by Durand translate from so

未解决问题?本站智能推荐:

1回复

自定义Django UserCreationForm,以便我根据姓氏和名字创建用户名,而不是由用户输入?

我想修改我的UserCreationForm,以便当用户请求注册到我的网站时,他们得到的用户名为last_name +'。'+ first_name。 我的djangoforms.py: 所以我从实际形式中排除了用户名: 在我的views.py中: 我曾尝试在此处放
1回复

具有注册和登录功能的django系统

我正在尝试构建具有注册和登录功能的Django系统,并且我还希望登录的用户应该能够在其个人资料中添加注释。 我应该采用哪种方法来构建模型?...为User创建OneToOneField或创建自定义Django User模型。 请帮忙!
1回复

Django:为链接到用户个人资料的数据创建表单

我正在尝试使用将用户作为外键的模型来保存链接到用户个人资料的数据。 我想不出一种创建表单的方法,该方法允许添加数据的新实例而无需在表单本身中包含用户名。 我想要一个不包含用户外键的表单。 一切正常,直到我尝试将用户ID添加到将要保存的表单/数据中。 如何保存保存的登录用户,在请求对象
2回复

Django用户注册,用户名变为“ firstname.lastname”

我想为我的django应用程序创建一个注册页面,以便“请求”访问权限。 换句话说,他们提交表单并创建用户和user.is_active = False。 然后,作为管理员,我可以批准他们的访问。 但是,我不希望他们能够输入用户名。 相反,我希望他们的用户名是firstname.las
2回复

Django使用经过身份验证的用户作为字段进行表单验证

模型: 我需要一个表单来创建/更新ProjectType。 请注意所有者字段 - 它应该是当前登录的用户。 问题是如何确保正确验证unique_together中的约束。 我不想在表单上显示所有者字段 - 它是当前用户,因此它应该由系统自动设置。 但无论我如何尝试这样做,验证
2回复

Django中的表单层次结构问题

我创建了一个登录表单,如下所示: 我在此视图中使用它: 调试后,我意识到form.is_valid()方法返回false,因为is_bound attr为false。 我需要重新定义表单中的内容还是修改视图??? 编辑1 我一直关注关于is_valid()方法返回F
3回复

Django登录失败

我正在尝试制作用户登录视图,并且它一直失败。 这是我的代码: 基本上,我一直在网站上打印“ FORM NOT VALID”,但不知道为什么。 请帮助? 谢谢
1回复

表单未在Django中发布

我正在尝试使用Django做一些非常基本的表单发布,但是每当我尝试单击按钮提交信息时,都不会发生任何事情。 在终端或Chrome的开发人员中不会显示任何错误或消息。 此页面上没有JS,而只是html: 我对此页面的看法也非常简单: 对于发生的事情,我真的感到困惑,我一直在遵循
2回复

Django注册和登录 - 通过示例解释

有人可以详细解释如何以尽可能简单的方式进行注册和身份验证吗? 我使用django.contrib.auth进行了身份验证(登录),但我想要的是完整的注册(社交/非)+登录。 已经看过django-allauth , django-social-auth , django-social但是仍然
2回复

django-中间件问题

我想在我的网站上随处放置一个登录表单,在遵循一些SO答案之后,我决定编写自己的中间件,如下所示: 在我的settings.py中,我有: 可以从各处访问的base.html中的表单如下所示: 登录正常,但是每次执行一次GET请求user.is_authenticated后