【问题标题】:Model is either not installed, or is abstract - Django, Python模型要么未安装,要么是抽象的 - Django、Python
【发布时间】:2020-08-03 06:19:51
【问题描述】:

当我迁移下面的代码时,我收到以下错误----错误: users.UserStripe.user:(fields.E300)字段定义了与模型“settings.AUTH_USER_MODEL”的关系,该模型要么未安装,要么是抽象的。 users.UserStripe.user: (fields.E307) 字段 users.UserStripe.user 被声明为对“settings.auth_user_model”的惰性引用,但未安装应用程序“settings”。---
我知道这与我在条带和配置文件类中有“用户”的事实有关,但我不确定如何停止错误。任何指导将不胜感激!

models.py - 用户

import stripe

from django.db import models
from django.conf import settings
from django.contrib.auth.models import User


stripe.api_key = '****************' 

class UserStripe(models.Model):
    **user = models.OneToOneField('settings.AUTH_USER_MODEL', on_delete=models.CASCADE)**
    stripe_id = models.CharField(max_length=120)

    def __str__(self):
        return str(self.stripe_id)


class Profile(models.Model):
    **user = models.OneToOneField(User, on_delete=models.CASCADE)**
    image = models.ImageField(default='', upload_to='profile_pics')

    def __str__(self):
        return f'{self.user.username} Profile'

【问题讨论】:

    标签: python django django-models django-views django-templates


    【解决方案1】:

    您不应将 'settings.AUTH_USER_MODEL' 用作字符串 literal,因为这样 Django 将在 settings 应用程序中查找名为 AUTH_USER_MODEL 的模型。但是没有设置应用,也没有同名的模型。

    你应该传递settings.AUTH_USER_MODEL

    from django.db import models
    from django.conf import settings
    
    class UserStripe(models.Model):
        user = models.OneToOneField(
            settings.AUTH_USER_MODEL,
            on_delete=models.CASCADE
        )
        stripe_id = models.CharField(max_length=120)
    
        def __str__(self):
            return str(self.stripe_id)
    
    class Profile(models.Model):
        user = models.OneToOneField(
            settings.AUTH_USER_MODEL,
            on_delete=models.CASCADE
        )
        image = models.ImageField(default='', upload_to='profile_pics')
    
        def __str__(self):
            return f'{self.user.username} Profile'

    注意:通常使用settings.AUTH_USER_MODEL [Django-doc] 引用用户模型比直接使用User model [Django-doc] 更好。更多信息可以查看referencing the User model section of the documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 2015-04-21
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      相关资源
      最近更新 更多