我有一个名为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
非常感谢。
答案 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()
删除应该通过级联来处理。