2017-10-04 2 views
0

エラー: blog.Post.author:(fields.E301)フィールドはモデル 'authとのリレーションを定義します。 User 'がスワップアウトされています。 ヒント:リレーションを 'settings.AUTH_USER_MODEL'を指すように更新します。(fields.E301)フィールドは、スワップアウトされたモデル 'auth.User'とのリレーションを定義します。

私は設定を入れ替える必要があることを知っています。auth.UserのAUTH.USERのためのAUTH_MODELですが、何らかの理由でこれを行うとブログが表示されません。ナビゲーションバーからブログを表示しようとするとルーティングが正しく行われますが、コンテンツはもうありません。私も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 

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', 
) 

ブログ/ admin.py

from django.contrib import admin 
from .models import Post 

admin.site.register(Post) 

答えて

1

あなたがAUTH_USER_MODEL = 'accounts.User'を設定しておりますので、お使いのモデルは次のようになります。

class Post(models.Model): 
    author = models.ForeignKey(settings.AUTH_USER_MODEL) 

しかし、switch to a custom user model for an existing projectには非常に難しいです。これを行う場合は、データベースを削除してマイグレーションを削除し、makemigrationsmigrateを再実行するのが最も簡単です。

関連する問題