我使用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',
)
答案 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并且工作正常。