【问题标题】:Django project- adding a new userDjango 项目 - 添加新用户
【发布时间】:2017-01-13 14:09:26
【问题描述】:

我需要为下周开始的新员工在我的 Django 项目中添加新的用户配置文件 - 我尝试通过 www.mysite.co.uk/admin 执行此操作并转到身份验证和授权 -> 添加用户,我设置了用户名和密码,并赋予了用户个人资料管理员权限。它表示用户已成功创建,但是当我尝试通过运行以下命令来获取刚刚在命令行中添加的用户配置文件时:

from employees import models

from employees.models import Employee

allEmps = Employee.objects.all()

newUser = allEmps.filter(first_name = "name")

newUser 刚刚变成了一个空数组,所以很明显用户还没有被添加到数据库中......如果我运行相同的命令,但使用我的名字,而不是我刚刚尝试过的用户的名字添加,newUser 包含一个元素(我的用户帐户)的数组,然后我可以将其分配给一个变量以检查其属性等。

然后我尝试直接在命令行中创建一个新用户,所以运行:

newEmployee = Employee(first_name = "name", surname = "surname")

这似乎在本地创建了一个 Employee 对象

如何将新用户添加到我的 Django 项目/数据库中?

我的用户数据库条目是 Employee- 但是当我在 Employee 类中查看 employees.models 时,没有“add_employee”视图...

我应该跑吗

newEmployee = Employee(first_name = "name", surname = "surname")

来自实时服务器上的外壳?这是否会使新员工用户配置文件可以通过 Django 管理页面访问,以便我可以设置他们的权限、电子邮件地址等?

【问题讨论】:

    标签: python django user-profile


    【解决方案1】:

    此语句不会在数据库中创建员工:

    newEmployee = Employee(first_name = "name", surname = "surname")
    

    它只是创建一个员工对象。您可以通过以下任一方式将数据保存到数据库:

    newEmployee = Employee(first_name = "name", surname = "surname")
    newEmployee.save()
    

    或者

    newEmployee = Employee.objects.create(first_name = "name", surname = "surname")
    

    编辑:

    我回答得太快了,但忽略了它的另一部分。您不应该使用生产外壳来添加新员工,而是使用管理界面。 Django 第一个教程有足够的例子告诉你如何add a new model to admin,你应该经常阅读它来了解 django 的基础知识。它的标题是“编写你的第一个 Django 应用程序”是有原因的。

    重新编辑:

    Django 文档也有部分讨论如何extend a User model。在本节的末尾,它建议:

    这些配置文件模型在任何方面都不是特别的 - 它们只是 Django 恰好与用户模型具有一对一链接的模型。作为 因此,它们不是在创建用户时自动创建的,而是 django.db.models.signals.post_save 可用于创建或更新 适当的相关模型。

    因此您的Employee 模型不会自动创建,只需检查文档并使用post_save 方法即可。

    【讨论】:

    • 啊,好的,谢谢。大概我需要从实时服务器上的 shell 执行此操作,即实时 Django 项目/数据库在哪里?
    • 使用管理界面添加用户是我尝试的第一件事......
    • UserEmployee 是两个不同的模型,对吧?
    • from django.contrib.auth.models import User。请先参考文档。 docs.djangoproject.com/en/1.10/topics/auth/default/…
    • 提示:你保存了Employee Dave??????再回头看看我的回答
    猜你喜欢
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    相关资源
    最近更新 更多