我阅读了文档和这篇文章...... Django - Foreign Key to User model
我按照它说的做了,我仍然无法让它工作。当我尝试运行迁移时,我在追溯中得到了这个错误......
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()
答案 0 :(得分:50)
请勿直接使用User
模型。
您应该引用该用户,而不是直接引用User 使用django.contrib.auth.get_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,
)
答案 1 :(得分:2)
如果您创建了自定义用户模型,则可以使用setting.AUTH_USER_MODEL
,否则可以继续使用User model
答案 2 :(得分:0)
列“author_id”不存在,从这里看起来是同样的问题:Django suffix ForeignKey field with _id,所以为了避免这种回溯你可以使用:
author = models.ForeignKey(User, db_column="user")
答案 3 :(得分:-3)
我不知道“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()