我正在尝试将我的Django应用程序数据库从SQLite迁移到MySQl。
我正在使用manage.py dumpdata --natural > hunt.json
然后在更新设置以连接到MySQL数据库后,当loaddata
使用manage.py loaddata hunt
时,它会引发以下错误
Problem installing fixture 'hunt.json': Traceback (most recent call last):
File "C:\Python27\lib\site-packages\django\core\management\commands\loaddata.p
y", line 190, in handle
for obj in objects:
File "C:\Python27\lib\site-packages\django\core\serializers\json.py", line 47,
in Deserializer
raise DeserializationError(e)
DeserializationError: 'NoneType' object has no attribute '_meta'
以下是我的model.py
from django.db import models
class DJManager(models.Manager):
def get_by_natural_key(self, name):
return self.get(name=name)
class DJ(models.Model):
objects = DJManager()
name = models.CharField(max_length=50, unique=True)
rank = models.IntegerField()
img = models.ImageField(upload_to='/img/', height_field=None, width_field=None)
soundcloud_profile = models.CharField(max_length=100, blank=True, null=True)
def natural_key(self):
return (self.name,)
#for human readable representation of objects
def __unicode__(self):
return self.name
class Song(models.Model):
song_id = models.IntegerField()
name = models.CharField(max_length=100)
title = models.CharField(max_length=100)
normalized_name = models.CharField(max_length=100)
artist = models.ForeignKey(DJ, default=None, blank=True, null=True)
artists = models.CharField(max_length=100)
remixers = models.CharField(max_length=100, default=None, blank=True, null=True)
release_date = models.DateField()
slug = models.CharField(max_length=100)
artwork = models.CharField(max_length=100)
genres = models.CharField(max_length=50)
duplicate = models.BooleanField(default=False)
votes = models.IntegerField(default=0)
#for human readable representation of objects
def __unicode__(self):
return self.normalized_name
答案 0 :(得分:0)
您需要在DJ模型中定义natural_key()方法
def natural_key(self):
return self.name
您可以在Django文档中查看它:https://docs.djangoproject.com/en/dev/topics/serialization/#dependencies-during-serialization
答案 1 :(得分:-1)
SOUTH_TESTS_MIGRATE = False
设置settings.py
。
如果这是假的,South的测试运行器集成将进行测试 数据库是使用syncdb创建的,而不是通过迁移( 默认值)。
另外,我把所有东西都扔进了夹具里。显然,这是用南方进行固定的一种不好的方式 - 因为它还将南移民表转移到固定装置中。所以我必须创建我的夹具以特定于应用程序
manage.py dumpdata hunt --natural > hunt.json