Я прочитал документы и этот пост ... Django - модель внешнего ключа для пользователя
Я следовал тому, что он сказал, и я все еще не могу заставить это работать. Когда я пытаюсь запустить миграцию, я получаю эту ошибку в трассировке ...
django.db.utils.ProgrammingError: column "author_id" cannot be cast automatically to type integer
HINT: You might need to specify "USING author_id::integer".
Я просто не знаю, как исправить эту ошибку.
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class BlogCategory(models.Model):
'''model for categories'''
title = models.CharField(max_length=30)
description = models.CharField(max_length=100)
class BlogPost(models.Model):
'''a model for a blog post'''
author = models.ForeignKey(User)
date = models.DateField()
title = models.CharField(max_length=100)
post = models.TextField()
4 ответа
Я не знаю подход «settings.AUTH_USER_MODEL», но хорошо известный и широко используемый подход - это модель «Auth.User». Нечто подобное с твоей стороны.
from django.contrib.auth.models import User
class BlogPost(models.Model):
'''a model for a blog post'''
author = models.ForeignKey(User)
date = models.DateField()
title = models.CharField(max_length=100)
post = models.TextField()
Если бы вы создали пользовательскую модель пользователя, вы бы использовали setting.AUTH_USER_MODEL
, если нет, вы можете использовать User model
.
Ссылка на модель пользователя Django
Столбец "author_id" не существует, похоже, здесь та же проблема: Django Суффикс поля ForeignKey с _id, поэтому, чтобы избежать этой трассировки, вы можете использовать:
author = models.ForeignKey(User, db_column="user")
Не используйте модель User
напрямую.
Из документации
Вместо того, чтобы ссылаться на
User
напрямую, вы должны ссылаться на пользователя модель с использованиемdjango.contrib.auth.get_user_model()
Когда вы определяете внешний ключ или отношения «многие ко многим» с пользовательской моделью, вы должны указать пользовательскую модель, используя параметр
AUTH_USER_MODEL
.
Примере:
from django.conf import settings
from django.db import models
class Article(models.Model):
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
)
Похожие вопросы
Связанные вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.