用户配置文件的管理员,用于创建和删除用户和配置文件

时间:2011-07-11 20:19:52

标签: python django authentication django-contrib

我有一个名为Personnel的模型,我将其用作User模型的配置文件模型。我网站上的版主可以创建自己的帐户,但应填写所有个人资料字段。这是我的模型

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"
    )

我需要实现以下内容。

create模型上的Personnel方法,以便当有人调用方法Personnel.objects.create(username, email, phone, address)时,它会在User模型中创建新用户并存储配置文件字段在Personnel模型中。我需要一个表单来处理请求,但此表单应验证Personnel模型和User模型的字段。

delete模型上的Personnel方法,以便当有人调用方法Personnel.objects.delete(username)时,它会从Personnel模型中删除配置文件,并从{{{1}模型中删除用户1}}模型。我认为我不需要这样的表格。

有谁能告诉我如何做表格位和经理位。这是我到目前为止所做的:

形式:

管理器:

User

非常感谢。

2 个答案:

答案 0 :(得分:1)

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

https://docs.djangoproject.com/en/1.3/topics/db/models/#overriding-model-methods

Personnel.save()由Django调用,可以创建缺少的用户和个人资料。

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

答案 1 :(得分:1)

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()

删除应该通过级联来处理。