thebot
thebot

Reputation: 249

How can I link model in new app with specific model data in allauth?

In Django, I have installed allauth. Then I have created a new app, where user's actions will be. I want to link each of the actions with allauth's user data within EmailAddress model.

My questions are:

  1. Normally, data is defined by user_action = models.CharField(max_length=200) and such. ForeignKey on user action does not allow defining field types, at least from what I've seen. How can I define it, or is it okay not to define it?

  2. How can I define the relationship with data in allauth's model that's not anywhere near this new app? For example, I have:

    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
    

It does not work. The error shows:

input.Button.comment: (fields.E300) Field defines a relation with model 'EmailAddress', which is either not installed, or is abstract. input.Button.comment: (fields.E307) The field input.Button.comment was declared with a lazy reference to 'input.emailaddress', but app 'input' doesn't provide model 'emailaddress'.

The allauth model data ("user") in question is:

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()

I'm using virtualenv and have allauth installed within the project.

Upvotes: 0

Views: 122

Answers (1)

DisneylandSC
DisneylandSC

Reputation: 966

So EmailAddress is your User model?

In that case you might be able to do this via the standard way by referring to settings.py

Import . from settings

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

Upvotes: 0

Related Questions