Я прочитал документы и этот пост ... 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()
24
deltaskelta 16 Дек 2015 в 10:03

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()
-6
Dean Christian Armada 16 Дек 2015 в 07:27

Если бы вы создали пользовательскую модель пользователя, вы бы использовали setting.AUTH_USER_MODEL, если нет, вы можете использовать User model.

Ссылка на модель пользователя Django

2
Martin Evans 16 Авг 2017 в 17:59

Столбец "author_id" не существует, похоже, здесь та же проблема: Django Суффикс поля ForeignKey с _id, поэтому, чтобы избежать этой трассировки, вы можете использовать:

author = models.ForeignKey(User, db_column="user")
0
Community 23 Май 2017 в 10:31

Не используйте модель 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,
    )
69
Flimm 14 Июн 2019 в 09:15