如何在Django中创建包含User模型字段子集的模型

时间:2013-03-23 11:29:55

标签: django inheritance django-models

如何创建包含所需OrderUser模型子字段的User模型:

  • 如first_name
  • 姓氏
  • 电子邮件

我想避免从django.contrib.auth.models AbstractUser 手动复制字段的结构

class OrderUser(models.Model):
    first_name = models.CharField(_('first name'), max_length=30, blank=True)
    last_name = models.CharField(_('last name'), max_length=30, blank=True)
    email = models.EmailField(_('email address'), blank=True)

我想知道是否有办法写这样的东西:

class OrderUser(models.Model):
    first_name = User.fields.first_name
    last_name = User.fields.last_name
    email = User.fields.email

通常,如果我希望两个模型具有相同的字段,我使用抽象模型继承。 但继承自AbstractUser会导致许多不必要的字段,如username,is_staff,is_active等。

1 个答案:

答案 0 :(得分:0)

好的,我的不好,我终于找到了自己问题的答案,也许对其他人有帮助。

_meta属性对我有用:

class OrderUser(models.Model):
    first_name = User._meta.get_field_by_name('first_name')[0]
    last_name = User._meta.get_field_by_name('last_name')[0]
    email = User._meta.get_field_by_name('email')[0]

有关_meta的更多讨论: