模型中的外键(用户)

问题描述 投票:0回答:4

我阅读了文档和这篇文章...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()
python django django-models foreign-keys
4个回答
170
投票

不要直接使用

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

4
投票

如果您创建了自定义用户模型,您将使用

setting.AUTH_USER_MODEL
,如果没有,您可以继续使用
User model

引用 Django 用户模型


0
投票

“author_id”列不存在,看起来这里有同样的问题:Django 后缀foreignKey字段带有_id,所以为了避免这种回溯,您可以使用:

author = models.ForeignKey(User, db_column="user")

-14
投票

我不知道“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()
© www.soinside.com 2019 - 2024. All rights reserved.