django foreignkey(用户)的模特

del*_*lta 12 python django

我阅读了文档和这篇文章...... 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".
Run Code Online (Sandbox Code Playgroud)

我只是不知道如何解决这个错误.

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()
Run Code Online (Sandbox Code Playgroud)

And*_*w E 61

不要User直接使用该模型.

文档中

您应该使用django.contrib.auth.get_user_model()引用用户模型,而不是直接引用User.

例:

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,
    )
Run Code Online (Sandbox Code Playgroud)

  • 使用这个答案时让我困惑的一件事是我是否需要在“settings.py”中定义“AUTH_USER_MODEL”设置。文档说这是不必要的 - “此方法将返回当前活动的用户模型 - 自定义用户模型(如果指定),否则返回 User。” (4认同)
  • [文档](https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#auth-custom-user)声明:"Django允许您通过提供值来覆盖默认用户模型AUTH_USER_MODEL设置".基本上:*如果*您提供自定义`用户'模型,您必须*提供`AUTH_USER_MODEL`设置. (4认同)

Dea*_*ada -15

我不知道“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()
Run Code Online (Sandbox Code Playgroud)