Вы должны не использовать строковый литерал здесь, settings.AUTH_USER_MODEL
[Django-doc] сама является строкой, которая содержит название пользовательской модели, как указано в документации:
AUTH_USER_MODEL
По умолчанию: 'auth.User'
Модель , используемая для представления пользователя . (..)
Таким образом, вы реализуете это как:
from django.db import models
from django.conf import settings
class Post(models.Model):
title=models.CharField(max_length=100)
desc=models.TextField()
date=models.DateTimeField(auto_now=True)
author=models.ForeignKey(<b>settings.AUTH_USER_MODEL</b>, on_delete=models.CASCADE)
Идея состоит в том, что вы либо передаете ссылку на сам класс, либо используете квалифицированное имя в качестве строки для него. Но 'settings.AUTH_USER_MODEL'
- это , а не квалифицированное имя модели пользователя.
В качестве альтернативы вы можете использовать get_user_model(..)
[Django-doc] :
from django.db import models
from django.contrib.auth import <b>get_user_model</b>
class Post(models.Model):
title=models.CharField(max_length=100)
desc=models.TextField()
date=models.DateTimeField(auto_now=True)
author=models.ForeignKey(<b>get_user_model()</b>, on_delete=models.CASCADE)