1

我有一个模型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模型中删除用户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()

非常感谢。

4

2 回答 2

1

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

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

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

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

于 2011-07-11T20:45:17.750 回答
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()

删除应该通过级联自行处理。

于 2011-07-11T22:05:37.180 回答