我阅读了文档和这篇文章...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()
不要直接使用
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,
)
“author_id”列不存在,看起来这里有同样的问题:Django 后缀foreignKey字段带有_id,所以为了避免这种回溯,您可以使用:
author = models.ForeignKey(User, db_column="user")
我不知道“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()