1
引用的模型的查找失敗最近升級的Django從1.7升級到1.8。將PRD DB轉儲到DEV中。不關心在開發數據庫中的任何遷移,所以:Django makemigrations 1.8.18 ValueError:由字段
- 刪除我的應用程序中的遷移文件夾。
- 從django_migrations表中刪除所有行。
好的,都很好。現在,我只是想爲這些應用做一個虛假的遷移,然後離開我們。所以我從頂級應用「網站」開始。
運行此:
python manage.py makemigrations website
給出了文件:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='HistoricalStock',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('period_date', models.DateField()),
('close', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('open', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('day_high', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('day_low', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('change', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('average_gain', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('average_loss', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('rsi', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('true_range', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('average_true_range', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('price_average_true_range', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('thirty_day_constant_maturity_vol_skew', models.DecimalField(default=0.0, null=True, max_digits=20, decimal_places=10, blank=True)),
],
options={
'ordering': ['period_date'],
},
),
migrations.CreateModel(
name='Industry',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('group', models.CharField(unique=True, max_length=40, verbose_name=b'name')),
('slug', models.SlugField(unique=True)),
],
),
migrations.CreateModel(
name='Sector',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('group', models.CharField(unique=True, max_length=40, verbose_name=b'name')),
('slug', models.SlugField(unique=True)),
],
),
migrations.CreateModel(
name='Stock',
fields=[
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
('ticker', models.CharField(max_length=20)),
('profile', models.TextField()),
('name', models.CharField(max_length=40)),
('broker_rating', models.DecimalField(default=0.0, null=True, max_digits=10, decimal_places=2, blank=True)),
('ranking_industry', models.CharField(max_length=40, null=True, blank=True)),
('ranking_industry_upper_percent', models.DecimalField(null=True, max_digits=20, decimal_places=10, blank=True)),
('country', models.CharField(max_length=40, null=True, blank=True)),
('has_options', models.BooleanField(default=False)),
('current_stock_price', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('change', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('change_percent', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('open', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('day_high', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('day_low', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('ex_div_date', models.DateField(null=True, blank=True)),
('pay_div_date', models.DateField(null=True, blank=True)),
('earnings_date', models.DateField(null=True, blank=True)),
('vol', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('pe', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('mkt_cap', models.DecimalField(default=0, max_digits=40, decimal_places=0)),
('div_yield', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('div_amount', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('year_high', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('year_low', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('day180pc', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('day360pc', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('instpct', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('insidepct', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('earnings_share', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('fifty_ma', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('two_hundred_ma', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('std_dev', models.DecimalField(default=0.0, max_digits=20, decimal_places=10)),
('stats_period', models.IntegerField(default=0)),
('last_refreshed', models.DateTimeField(null=True, editable=False, blank=True)),
('industry', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='website.Industry', null=True)),
('sector', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='website.Sector', null=True)),
],
),
migrations.AddField(
model_name='industry',
name='sector',
field=models.ForeignKey(to='website.Sector'),
),
migrations.AddField(
model_name='historicalstock',
name='stock',
field=models.ForeignKey(to='website.Stock'),
),
migrations.AlterUniqueTogether(
name='historicalstock',
unique_together=set([('stock', 'period_date')]),
),
]
看起來不錯,4個型號,與一對夫婦FK的到車型在同一個文件。
然後,運行假貨:
python manage.py migrate website --fake
它去堅果:
ValueError: Lookup failed for model referenced by field keyedcache.Stock.sector: website.Sector
它說,該應用程序keyedcache沒有找到該模型行業的參考? keyedcache有什麼與它有關的?
Keyedcache是我安裝的應用程序。
如果我運行:
python manage.py migrate keyedcache --fake
它說沒有遷移。
而你又回到原處。
我已經在Django 1.7中完成了數百次,完全沒有問題。 1.8引起了這個問題。
怎麼回事?
它的工作 - 奇怪。我刪除了.pyc文件並重新開始,並且一切都運行完畢。不知道! – professorDante
很高興整理出來。與您的項目一切順利 – e4c5