Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python (fields.E301)字段定义与模型的关系';授权用户';,已经换掉了_Python_Django_Django Models - Fatal编程技术网

Python (fields.E301)字段定义与模型的关系';授权用户';,已经换掉了

Python (fields.E301)字段定义与模型的关系';授权用户';,已经换掉了,python,django,django-models,Python,Django,Django Models,错误: blog.Post.author:(fields.E301)字段定义了与模型“auth.User”的关系,该模型已被调出。 提示:更新关系以指向“settings.AUTH\u USER\u MODEL” 我知道我需要在settings.AUTH\u USER\u模型中交换AUTH.USER,但由于某些原因,这样做会导致我的博客无法显示。当我尝试从导航栏查看博客时,路由是正确的,但不再有内容。我也无法在Django admin上登录或创建新用户。这些问题是从在“帐户设置”中设置身份验证用

错误: blog.Post.author:(fields.E301)字段定义了与模型“auth.User”的关系,该模型已被调出。 提示:更新关系以指向“settings.AUTH\u USER\u MODEL”

我知道我需要在settings.AUTH\u USER\u模型中交换AUTH.USER,但由于某些原因,这样做会导致我的博客无法显示。当我尝试从导航栏查看博客时,路由是正确的,但不再有内容。我也无法在Django admin上登录或创建新用户。这些问题是从在“帐户设置”中设置身份验证用户模型开始出现的

blog/models.py

from django.db import models
from django.utils import timezone
from fitness_project import settings


class Post(models.Model):
    author = models.ForeignKey('auth.User', related_name='User')
    #author = models.ForeignKey(settings.AUTH_USER_MODEL)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(
            default=timezone.now)
    published_date = models.DateTimeField(
            blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title
设置.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hello',
    'blog',
    'membership',
    'accounts',
    'django_forms_bootstrap',
]

AUTH_USER_MODEL = 'accounts.User'

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'accounts.backends.EmailAuth',
)
blog/admin.py

from django.contrib import admin
from .models import Post

admin.site.register(Post)

因为您已经设置了
AUTH\u USER\u MODEL='accounts.USER'
,所以您的模型应该是:

class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL)
然而,这是非常困难的。如果您正在尝试这样做,您可能会发现删除数据库、删除迁移,然后重新运行
makemigrations
migrate
是最简单的方法。的答案是正确的,但我对它做了更多的修改

由于您已经从fitness_project import settings导入了-
,您还可以指定一个名为User的var,以便下次在模型的字段中使用它

User = settings.AUTH_USER_MODEL
然后,像往常一样,您可以像这样使用用户-

author = models.ForeignKey(User, related_name='User')