Python 用于创建和删除用户和配置文件的用户配置文件管理器

Python 用于创建和删除用户和配置文件的用户配置文件管理器,python,django,authentication,django-contrib,Python,Django,Authentication,Django Contrib,我有一个名为personal的模型,我正在使用它作为用户模型的配置文件模型。我的网站上的版主可以创建和他们自己的帐户,但所有的个人资料字段都应该填写。这是我的模型 class Personnel(models.Model): """ Model for storing the personnel information """ user = models.OneToOneField( User ) phone = models.Ch

我有一个名为
personal
的模型,我正在使用它作为
用户
模型的配置文件模型。我的网站上的版主可以创建和他们自己的帐户,但所有的个人资料字段都应该填写。这是我的模型

class Personnel(models.Model):
    """
    Model for storing the personnel information
    """
    user = models.OneToOneField(
        User
    )
    phone = models.CharField(
        null=False, max_length=50, verbose_name="Phone"
    )
    address = models.CharField(
        null=True, max_length=500, verbose_name="Address"
    )
我需要实现以下内容

人员
模型上的
创建
方法,以便当有人调用方法
人员.objects.create(用户名、电子邮件、电话、地址)
时,它在
用户
模型中创建新用户,并在
人员
模型中存储配置文件字段。我需要一个表单来处理此请求,但此表单应验证
人员
模型和
用户
模型的字段

personal
模型上的
delete
方法,这样当有人调用方法
personal.objects.delete(username)
时,它会从
personal
模型中删除配置文件,从
user
模型中删除用户。我想我不需要这个表格

有谁能告诉我怎样做表格和经理部分吗。以下是我目前掌握的情况:

表格:

?

经理:

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

class Personnel(models.Manager):
    """
    This is the manager for the Personnel model. It contains the logic for
    creating a new personnel which also creates a new User.
    """
    def create(self, username, email, phone, address):
        """
        Creates a new personnel
        """
        pass

    def delete(self, username):
        """
        Deletes a personnel
        """
        super(Personnel, self).delete()

非常感谢。

personal.save()
personal.delete()
添加方法来完成这项工作可能更容易

Django调用personals.save(),可以创建缺少的用户和配置文件

“覆盖删除”侧栏可能不相关,具体取决于您的应用程序。大容量删除非常罕见,而且很容易进行大容量删除后清理。或者单独删除,而不是批量删除

class PersonnelManager(models.Manager):
    def create(self, username, email, phone, address, **kwargs):
        user = User.objects.get_or_create(username=username, email=email)
        return super(PersonnelManager, self).create(user=user, phone=phone, address=address, **kwargs)

class Personnel(models.Model):
    ...
    objects = PersonnelManager()

删除应该在级联过程中自行处理。

嗨,克里斯。谢谢你的回答。你能告诉我怎样填写表格吗。我希望有一个通用表单来验证我的
人员
模式和
用户
模型。
User
表单位于
django.contrib.auth.forms.UserCreationForm
。我需要将代码复制粘贴到我的自定义表单中吗?