Mer*_*alc 2 python django django-models
错误:blog.Post.author:(fields.E301)字段定义与已替换出的模型auth.User的关系。提示:将关系更新为指向“ settings.AUTH_USER_MODEL”。
我知道我需要将settings.AUTH_USER_MODEL替换为auth.User,但是由于某些原因,这样做会使我的博客无法显示。当我尝试从导航栏中查看博客时,路由是正确的,但是不再有内容。我也无法在Django管理员上登录或创建新用户。这些问题始于在帐户设置中设置AUTH_USER_MODEL。
博客/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
Run Code Online (Sandbox Code Playgroud)
settings.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',
)
Run Code Online (Sandbox Code Playgroud)
博客/admin.py
from django.contrib import admin
from .models import Post
admin.site.register(Post)
Run Code Online (Sandbox Code Playgroud)
既然已经设置了AUTH_USER_MODEL = 'accounts.User',您的模型应该是:
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL)
Run Code Online (Sandbox Code Playgroud)
但是,为现有项目切换到自定义用户模型极其困难。如果您尝试执行此操作,则可能会发现删除数据库,删除迁移然后重新运行makemigrations和最为简单migrate。
| 归档时间: |
|
| 查看次数: |
4453 次 |
| 最近记录: |