【问题标题】:How to create model containing subset of User model's fields in Django如何在Django中创建包含用户模型字段子集的模型
【发布时间】:2013-03-23 11:29:54
【问题描述】:

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

  • 名字
  • 姓氏
  • 电子邮件

我想避免从 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 等。

【问题讨论】:

    标签: django inheritance django-models


    【解决方案1】:

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

    _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的讨论:

    【讨论】:

      猜你喜欢
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2016-11-04
      • 2010-11-30
      • 2021-11-16
      • 1970-01-01
      相关资源
      最近更新 更多