Python MySQL和Django外键到用户模型
我用django的用户模型的所有者外键创建了这个模型Python MySQL和Django外键到用户模型,python,mysql,django,Python,Mysql,Django,我用django的用户模型的所有者外键创建了这个模型 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(
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\u id'在表中不存在”)
我还应该做什么
已安装的应用程序
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'usuarios',
'publicaciones',
)
您必须有一个列来存储mysql数据库中的外键 模型中的字段必须类似于:
owner = models.ForeignKey('auth.User')
数据库表中的列必须是:
owner_id INT(11)
我不知道为什么,但是django将“\u id”添加到数据库列名中
此外,如果不希望数据库列名带有后缀“\u id”,可以在模型字段中添加以下内容:
db_column='owner'
因此,它必须是:
owner = models.ForeignKey('auth.User',db_column='owner')
但是请记住在数据库中创建该列。您必须有一个列来在mysql数据库中存储外键 模型中的字段必须类似于:
owner = models.ForeignKey('auth.User')
数据库表中的列必须是:
owner_id INT(11)
我不知道为什么,但是django将“\u id”添加到数据库列名中
此外,如果不希望数据库列名带有后缀“\u id”,可以在模型字段中添加以下内容:
db_column='owner'
因此,它必须是:
owner = models.ForeignKey('auth.User',db_column='owner')
但请记住在数据库中创建该列。我在外键和用户方面有问题。我使用了OneToOneField,它工作了。我在外键和用户方面有问题。我使用OneToOneField,它工作了。尝试刷新数据库,可能在这里发布“sqlmigrate”的内容。你是否先调用了
makemigrations
?是的,我没有收到任何错误。你安装的应用程序中的Isdjango.contrib.auth
?是的,我用安装的应用程序更新了帖子。尝试刷新数据库,可能在这里发布'sqlmigrate'的内容。你是否先调用了makemigrations
?是的,我没有收到任何错误。你安装的应用程序中的Isdjango.contrib.auth
?是的,我用安装的应用程序更新了帖子。