2014-11-07 3 views
0

Я пытаюсь расширить модель пользователя в виде приложения Джанго, но я постоянно получаю сообщение об ошибке:
OperationalError в/админ/Идент/пользователь/3/
Исключение Значения: нет такого столбца: subjects_subject.user_idРасширение существующей модели пользователя в Django 1.7

Моего код:

#subjects/models.py 
from django.contrib.auth.models import User 
from django.db import models 


class Subject(models.Model): 
    user = models.OneToOneField(User) 
    description = models.CharField(max_length=100) 

models.signals.post_save 

#_admin/admin.py 
from django.contrib.auth.models import User, Group 
from django.contrib.auth.admin import UserAdmin, GroupAdmin 
from .extended_admin import new_admin 

from django.contrib import admin 
from subjects.models import Subject 

class SubjectInline(admin.StackedInline): 
    model = Subject 
    can_delete = False 
    verbose_name_plural = 'subject' 

class UserAdmin(UserAdmin): 
    inlines = (SubjectInline,) 

new_admin.register(User, UserAdmin) 
new_admin.register(Group, GroupAdmin) 

Я довольно много копировал Django собственный documentation слово в слово. Любая помощь будет действительно оценена!

EDIT: Я также хотел бы сказать, что я побежал syndb и flush

+0

Проводили ли вы мигрировать? – dgel

+0

Вы добавили поле 'user' _after_, выполняющее начальную синхронизацию/миграцию? если это так, вам может потребоваться запустить ['makemigrations'] (https://docs.djangoproject.com/en/dev/ref/django-admin/#makemigrations-app-label) – karthikr

+0

Я побежал' makemigrations' – Wallace

ответ

0

Я была такая же проблема, и вот шаги, которые я взял, чтобы решить эту проблему. Вы не указали используемую вами базу данных, но в моем случае я использую MySQL. Из Django docs здесь https://docs.djangoproject.com/en/1.8/topics/migrations/#mysql кажется, что иногда создание таблиц терпит неудачу. У меня была таблица под названием «администрирование», и она не обнаруживала никаких изменений.

Вот что я сделал:

  1. Удалить каталог миграции из моего приложения. Это было сделано для создания новых схем миграции.
  2. Переименовать каталог. Я переименовал свой каталог из «администрации» в «донор». По какой-то странной причине это, похоже, решило проблему. Я не совсем уверен, почему, но может быть «администрирование» является ключевым словом в MySQL или Django.
  3. Если оба действия не работают, возможно, вам придется вручную добавить изменения в соответствии с указаниями django docs. Еще проще, вы можете удалить существующую таблицу, если она пуста и ее воссоздать. (ВНИМАНИЕ! Пожалуйста, сделайте это, только если таблица пуста в противном случае вы рискуете потерять все свои данные)

В общем, кажется, нет вчистую причин, почему это может происходить в данный момент. Мой метод проб и ошибок, похоже, исправил это.

0

Вы решили эту проблему?

У меня была такая же проблема, после разных попыток я решил это. Я использую sqlite3.

кажется, что, когда вы впервые мигрирует, есть что-то неправильно с таблицей базы данных (я не знаю, что это проблема, вызванная, поэтому вы поднимаете ошибку: нет такого столбца: subjects_subject.user_id)

, если вы удалите каталог миграций и перезапустите, что не решит эту проблему, поскольку Django отслеживает все применяемые миграции в таблице django_migrations. Миграция была подделана, потому что таблица уже существовала (возможно, с устаревшей схемой) SO I удалите все строки в таблице django_migrations.

Вот что я сделал:

1.удалить все файлы в каталоге кочевок в моем Джанго приложение

2.Using python manage.py dbshell, затем DELETE FROM django_migrations WHERE app='your-app-name или DELETE FROM django_migrations WHERE ID='your-first-migrate

3.Then python manage.py makemigrationspython manage.py migrate

Успешный!

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