django foreignkey(用户)的模特

时间:2015-12-16 07:03:27

标签: python django

我阅读了文档和这篇文章...... 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()

4 个答案:

答案 0 :(得分:50)

请勿直接使用User模型。

来自the documentation

  

您应该引用该用户,而不是直接引用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

Referencing Django 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()