失败的固定负载:DoesNotExist:..匹配的查询不存在



从git-reo运行Django 1.5.x。使用south来管理迁移。我有一个这样的模型:

class Company(models.Model):
name = models.CharField(max_length = 100)
subdomain = models.CharField(max_length = 50)
is_active = models.BooleanField(default=True)
prefs = models.TextField(max_length=8*1024, null=True, blank=True, default=None)
is_dev = models.BooleanField(default=False) # this is a development company - internal to 15Five
trial_start_date = models.DateField(null=True, blank=True, default=None)
trial_length_days = models.PositiveIntegerField(default = 28)
email_domain = models.CharField(max_length = 100, null=True, blank=True, default=None)
cohort = models.ForeignKey(Cohort, null=True, blank=True, default=None)
create_ts = models.DateTimeField(_('Created'), default=timezone.now)
update_ts = models.DateTimeField(_('Updated'), default=timezone.now)
deactivate_ts = models.DateTimeField(_('Deactivated'), null=True, blank=True, default=None)
converted_to_paying_ts = models.DateTimeField(_('Converted'), null=True, blank=True, default=None)
features = models.ManyToManyField(Feature,
verbose_name=_('feature'), blank=True,
help_text='A feature which can be turned on or off for a company')

我在django管理中创建了一家公司。我使用manage.py dumpdata ff.company --indent=2导出JSON固定装置:

[
{
"pk": 1,
"model": "ff.company",
"fields": {
"cohort": null,
"subdomain": "zzz",
"name": "zzz",
"trial_start_date": null,
"trial_length_days": 0,
"converted_to_paying_ts": "2012-12-02T11:06:10Z",
"is_active": true,
"update_ts": "2012-12-02T11:06:11Z",
"is_dev": true,
"deactivate_ts": null,
"create_ts": "2012-12-02T11:05:56Z",
"email_domain": "zzz.com",
"prefs": "",
"features": []
}
}
]

我清空了我的ff_company表并运行迁移,结果出现了一个错误:

Error in migration: ff:0004_create_default_companies
DoesNotExist: Problem installing fixture 'C:<redacted>/migrations/fixtures/create_default_companies.json': Company matching query does not exist. Lookup parameters were {'id': 1}

你知道问题可能是什么吗?我认为南方不是问题所在,因为如果我手动加载夹具,我也会出现错误:

>manage.py loaddata ..migrationsfixturescreate_default_companies.json
DoesNotExist: Problem installing fixture 'C:<redacted>migrationsfixturescreate_default_companies.json': Company matching query does not exist. Lookup parameters were {'id': 1}

我的公司模型上有pre_save和postrongave信号触发器。他们没有检查raw参数,并试图对不存在的数据库值做一些明智的事情。

处理fixture文件时,数据会按原样保存到数据库中。不调用模型定义的save()方法,并且任何pre_save或postrongave信号都将使用raw=True进行调用,因为实例只包含模型what-s-a-gfixture的本地属性。

from django.db.models.signals import post_save
from .models import MyModel
def my_handler(**kwargs):
# disable the handler during fixture loading
if kwargs['raw']:
return
...
post_save.connect(my_handler, sender=MyModel)

最新更新