【问题标题】:user inheritance in djangodjango中的用户继承
【发布时间】:2011-01-10 15:49:31
【问题描述】:

看到了几种扩展用户信息的方式,决定采用模型继承方式。

例如,我有:

class Parent(User):
    contact_means = models.IntegerField()
    is_staff = False 
    objects = userManager()

现在已经完成了,我已经下载了 django_registration 来帮助我向新用户发送电子邮件。问题是,我想调用 django_registration 的电子邮件发送/激活功能,而不是使用注册表单来注册新用户。所以我的工作流程是:

1. add new Parent object in admin page.
2. send email

我的问题是,django-registration 在用户表中创建了一个新的注册配置文件和一个新用户。我该如何调整,以便能够将用户条目添加到自定义用户表中。

我试图创建一个

modelAdmin

并更改 save_model 方法以从 django_registration 启动 create_inactive_user,但是当我使用模型继承并且我的父级中没有外键属性时,我不知道如何将从 django_registration 生成的用户对象保存到我的父表中型号。

【问题讨论】:

  • 是的,您在 Parent 中确实有一个隐式外键给用户,由模型继承创建,将被称为 user_ptr

标签: python django django-models django-registration


【解决方案1】:

大概是这样的:

p = Parent()
p.user_ptr = user
p.contact_means = ...
p.save()

(Django在做模型继承时会为你创建外键,加上以_ptr结尾的属性)

【讨论】:

  • 没有。 Django 的 ORM 使用元编程根据模型的字段和关系在 Python 类中创建属性。它对这些附加属性使用某些约定(通过附加例如 _set、_ptr 到字段名称)。
  • 不适用于我,这会将user的所有数据覆盖为Null或默认值。
猜你喜欢
  • 2021-01-14
  • 2012-08-06
  • 2016-09-18
  • 2019-06-23
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
相关资源
最近更新 更多