2016-01-07 2 views
1

У меня самая странная проблема с Django.Django Python во время перезагрузки Data Loss

У меня есть класс внутри класса в модуле:

class picture(models.Model): 
    picture = models.ImageField(upload_to='ProfilePictures', blank = True) 

class profilePictures(models.Model): 
    userName = models.CharField(max_length=30, primary_key=True) 
    profilePictureNumber = models.IntegerField() 
    profile1 = picture() 
    profile2 = picture() 
    profile3 = picture() 
    profile4 = picture() 
    profile5 = picture() 
    profile6 = picture() 

Теперь, когда я перезагрузить Django (например, я сделал обновление), я типа обычно:

python testproject.py makemigrations 
python testproject.py migrate 
python testproject.py runserver 

Но когда доступ к свойствам в базе данных в предыдущем запуске, я ничего не получаю. Так, например, я добавил изображение, перезапустил базу данных, а затем он сообщил мне, что изображения нет.

Я обратился к фактической базе данных с Navicat, и я узнал, что автоматически созданные записи для «изображения» все еще существуют в базе данных, но, похоже, Django удаляет связь между двумя строками базы данных (каждая строка является моделью).

Я бы предположил, что есть команда переносить эти данные, но я не могу найти ее.

+0

Первый 'makemigrations' команда используется затем' migrate'. Не могли бы вы попробовать это? – python

+0

Я набрал это неправильно в stackoverflow, теперь исправлена. Я чувствую, что ответ должен быть здесь, но я не могу его точно определить: https://docs.djangoproject.com/en/1.9/ref/django-admin/ –

+0

Вы должны использовать 'Foreign Key', а не создавать экземпляр класса внутри класса. – python

ответ

0

У вас должен быть только один класс ProfilePicture, потому что номер фотографии профиля не имеет никакого смысла.

class profilePictures(models.Model): 
    userName = models.CharField(max_length=30, primary_key=True) 
    picture = models.ImageField(upload_to='ProfilePictures', blank = True) 

Или вы можете использовать Foreign Key для установления связи между различными таблицами. Документация для Foreign Key здесь Foreign Key

Example

class Person(models.Model): 
    name = models.CharField(max_length=50) 
    birthday = models.DateField() 
    anniversary = models.ForeignKey(Anniversary) 
    address = models.ForeignKey(Address) 

class Address(models.Model): 
    line1 = models.CharField(max_length=150) 
    line2 = models.CharField(max_length=150) 
    postalcode = models.CharField(max_length=10) 
    city = models.CharField(max_length=150) 
    country = models.CharField(max_length=150) 

class Anniversary(models.Model): 
    date = models.DateField() 
+0

Уходя от вашего примера, что, если я хочу, чтобы у человека было несколько адресов? –

+0

Ваше 'имя пользователя 'является первичным ключом? Может быть только один экземпляр имени пользователя. В противном случае вам нужно удалить «первичный ключ» из таблицы, если вы решите использовать ту же таблицу. – python

+0

The ForeignKey должен быть от адреса к человеку, таким образом, у вас действительно может быть несколько адресов для каждого человека. –