用户模型的MySQL和Django外键

时间:2016-03-04 18:33:49

标签: python mysql django

我使用django的User模型的所有者外键创建了这个模型。

from django.db import models
from django.contrib.auth.models import User


class Publicacion(models.Model):
    titulo = models.CharField(max_length=120)
    owner = models.ForeignKey(User)
    contenido = models.TextField()
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    fechahora = models.DateTimeField(auto_now=False, auto_now_add=True)

    class Meta:
        ordering = ['fechahora']
        verbose_name_plural = 'Publicaciones'

    def __unicode__(self):
        return '%s %s' % (self.titulo, self.contenido)

但是当我进行迁移时遇到了这个错误:“django.db.utils.OperationalError:(1072,表中不存在'键列'owner_id')。

我还应该做些什么?

安装的应用程序

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'usuarios',
'publicaciones',
)

2 个答案:

答案 0 :(得分:0)

你必须有一个列来存储你的mysql数据库中的外键

模型中的字段必须类似于:

 owner = models.ForeignKey('auth.User')

数据库表中的列必须是:

owner_id      INT(11)

我不知道为什么,但是django将“_id”添加到数据库列名。

另外,如果您不希望数据库列名称后缀为“_id”,则可以在模型字段中添加:

db_column='owner'

所以一定是:

 owner = models.ForeignKey('auth.User',db_column='owner')

但请记住在数据库中创建该列。

答案 1 :(得分:0)

我遇到了外键和用户的问题。我使用了OneToOneField并且工作正常。