2016-03-04 3 views
1

Я сделал эту модель с внешним ключом владельца модели User от django.MySQL и 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() 
    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,«Key столбец 'owner_id' не существует в таблице").

Что еще мне делать?

УСТАНОВЛЕННЫХ APPS

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

Попробуйте очистить DB, разместите здесь содержимое «sqlmigrate». –

+0

Вы сначала называете 'makemigrations'? – schwobaseggl

+0

Да, и у меня не было никаких ошибок. –

ответ

0

Вы должны иметь столбец для хранения внешнего ключа в базе данных тузды

поле в модели должно быть что-то вроде:

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

И столбец в таблице базы данных должен быть:

owner_id  INT(11) 

Я не знаю, почему, но django добавьте «_id» в имя столбца базы данных.

Кроме того, если вы не хотите, чтобы имя столбца базы данных с суффиксом «_id», вы можете добавить это в поле модели:

db_column='owner' 

Так должно быть:

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

Но не забудьте создать этот столбец в своей базе данных.

0

У меня была проблема с внешним ключом и пользователем. Я использовал OneToOneField, и это сработало.

Смежные вопросы