如何将新应用中的模型与allauth中的特定模型数据相关联?

时间:2018-01-19 16:04:19

标签: django django-allauth

在Django中,我安装了allauth。然后我创建了一个新的应用程序,用户的操作将在那里。我想在EmailAddress模型中将每个操作与allauth的用户数据链接起来。

我的问题是:

  1. 通常,数据由user_action = models.CharField(max_length = 200)等定义。用户操作的ForeignKey不允许定义字段类型,至少从我看到的情况来看。我该如何定义它,还是不定义它?

  2. 如何在allauth的模型中定义与此新应用程序附近的数据之间的关系?例如,我有:

    from django.db import models
    import allauth.account.models
    
    class Button(models.Model):
        button_one = models.ForeignKey('EmailAddress', on_delete=models.CASCADE)
        def __str__(self):
            return self.button_one
    
  3. 它不起作用。错误显示:

      

    input.Button.comment:(fields.E300)字段定义与模型“EmailAddress”的关系,该模型未安装或是抽象的。   input.Button.comment:(fields.E307)字段input.Button.comment声明为对“input.emailaddress”的延迟引用,但app'input'不提供模型'emailaddress'。

    有问题的allauth模型数据(“用户”)是:

    class EmailAddress(models.Model):
    
        user = models.ForeignKey(allauth_app_settings.USER_MODEL,
                             verbose_name=_('user'),
                             on_delete=models.CASCADE)
        email = models.EmailField(unique=app_settings.UNIQUE_EMAIL,
                              max_length=app_settings.EMAIL_MAX_LENGTH,
                              verbose_name=_('e-mail address'))
        verified = models.BooleanField(verbose_name=_('verified'), default=False)
        primary = models.BooleanField(verbose_name=_('primary'), default=False)
    
        objects = EmailAddressManager()
    

    我正在使用virtualenv并在项目中安装了allauth。

1 个答案:

答案 0 :(得分:0)

所以EmailAddress是您的用户模型吗?

在这种情况下,您可以通过引用settings.py

以标准方式执行此操作
Import . from settings

class Button(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)