django-最新-第一步,奇怪的错误

django-最新-第一步,奇怪的错误,django,django-models,Django,Django Models,我从Django开始,已经遇到了一个问题: 我创建了以下模型: from django.db import models from django.utils import timezone import datetime # Create your models here. class Receta(models.Model): receta_text = models.CharField(max_length=100) pub_date = models.DateTimeFi

我从Django开始,已经遇到了一个问题:

我创建了以下模型:

from django.db import models
from django.utils import timezone
import datetime
# Create your models here.

class Receta(models.Model):
    receta_text = models.CharField(max_length=100)
    pub_date = models.DateTimeField('date published')
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    def __unicode__(self):  # Python 3: def __str__(self):
        return self.receta_text

class Ingredientes(models.Model):
    receta = models.ForeignKey(Receta)
    ingrediente_text = models.CharField(max_length=100)
    calorias = models.FloatField(default=0.0)
    hidratos = models.FloatField(default=0.0)
    def __unicode__(self):  # Python 3: def __str__(self):
        return self.ingrediente_text
然而,我有以下错误:你知道错误是什么吗

PD:我包括django教程中建议的完整过程

谢谢

rcastillo135@Michinin:~/django_learn/nutritest$ python manage.py sql recetas
    BEGIN;
    CREATE TABLE "recetas_receta" (
        "id" integer NOT NULL PRIMARY KEY,
        "receta_text" varchar(100) NOT NULL,
        "pub_date" datetime NOT NULL
    )
    ;
    CREATE TABLE "recetas_ingredientes" (
        "id" integer NOT NULL PRIMARY KEY,
        "receta_id" integer NOT NULL REFERENCES "recetas_receta" ("id"),
        "ingrediente_text" varchar(100) NOT NULL,
        "calorias" real NOT NULL,
        "hidratos" real NOT NULL
    )
    ;

    COMMIT;
    rcastillo135@Michinin:~/django_learn/nutritest$ python manage.py validate
    0 errors found
    rcastillo135@Michinin:~/django_learn/nutritest$ python manage.py syncdb
    Creating tables ...
    Installing custom SQL ...
    Installing indexes ...
    Installed 0 object(s) from 0 fixture(s)
    rcastillo135@Michinin:~/django_learn/nutritest$ python manage.py shell
    Python 2.7.3 (default, Sep 26 2013, 20:08:41) 
    [GCC 4.6.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> from recetas.models import Receta,Ingredientes
    >>> p=Receta.objects.get(id=1)
    >>> p
    <Receta: Pollo>
    >>> p.ingredientes_set.all()
    Traceback (most recent call last):
      File "<console>", line 1, in <module>
      File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 71, in __repr__
        data = list(self[:REPR_OUTPUT_SIZE + 1])
      File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 96, in __iter__
        self._fetch_all()
      File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 854, in _fetch_all
        self._result_cache = list(self.iterator())
      File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 220, in iterator
        for row in compiler.results_iter():
      File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 710, in results_iter
        for rows in self.execute_sql(MULTI):
      File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 781, in execute_sql
        cursor.execute(sql, params)
      File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 69, in execute
        return super(CursorDebugWrapper, self).execute(sql, params)
      File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 53, in execute
        return self.cursor.execute(sql, params)
      File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 99, in __exit__
        six.reraise(dj_exc_type, dj_exc_value, traceback)
      File "/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py", line 53, in execute
        return self.cursor.execute(sql, params)
      File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py", line 450, in execute
        return Database.Cursor.execute(self, query, params)
    OperationalError: no such column: recetas_ingredientes.receta_id
    >>> 
rcastillo135@Michinin:~/django\u learn/nutritest$python manage.py sql recetas
开始;
创建表“recetas\u receta”(
“id”整数不是空主键,
“接收文本”varchar(100)不为空,
“发布日期”日期时间不为空
)
;
创建表“recetas\u Ingredites”(
“id”整数不是空主键,
“receta_id”整数不为空引用“receta_receta”(“id”),
“Ingredite_text”varchar(100)不为空,
“卡路里”不为空,
“hidratos”实际值不为空
)
;
犯罪
rcastillo135@Michinin:~/django\u learn/nutritest$python manage.py验证
发现0个错误
rcastillo135@Michinin:~/django\u learn/nutritest$python manage.py syncdb
正在创建表。。。
正在安装自定义SQL。。。
正在安装索引。。。
已从0个设备安装0个对象
rcastillo135@Michinin:~/django\u learn/nutritest$python manage.py shell
Python 2.7.3(默认值,2013年9月26日,20:08:41)
[GCC 4.6.3]关于linux2
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
(InteractiveConsole)
>>>从Receta.models导入Receta、ingredients
>>>p=Receta.objects.get(id=1)
>>>p
>>>p.ingredientes_set.all()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python2.7/dist packages/django/db/models/query.py”,第71行,在__
数据=列表(自身[:报告输出大小+1])
文件“/usr/local/lib/python2.7/dist packages/django/db/models/query.py”,第96行,在__
self._fetch_all()
文件“/usr/local/lib/python2.7/dist-packages/django/db/models/query.py”,第854行,在“fetch\u all”中
self.\u result\u cache=list(self.iterator())
迭代器中的文件“/usr/local/lib/python2.7/dist packages/django/db/models/query.py”,第220行
对于编译器.results\u iter()中的行:
文件“/usr/local/lib/python2.7/dist packages/django/db/models/sql/compiler.py”,第710行,在results\u iter中
对于self.execute_sql(多)中的行:
文件“/usr/local/lib/python2.7/dist packages/django/db/models/sql/compiler.py”,第781行,在execute\u sql中
cursor.execute(sql,params)
文件“/usr/local/lib/python2.7/dist packages/django/db/backends/util.py”,执行中的第69行
返回super(CursorDebugWrapper,self).execute(sql,params)
文件“/usr/local/lib/python2.7/dist packages/django/db/backends/util.py”,执行中的第53行
返回self.cursor.execute(sql,params)
文件“/usr/local/lib/python2.7/dist-packages/django/db/utils.py”,第99行,在__
6.重新播放(dj_exc_类型、dj_exc_值、回溯)
文件“/usr/local/lib/python2.7/dist packages/django/db/backends/util.py”,执行中的第53行
返回self.cursor.execute(sql,params)
文件“/usr/local/lib/python2.7/dist packages/django/db/backends/sqlite3/base.py”,第450行,在execute中
返回Database.Cursor.execute(self、query、params)
操作错误:没有这样的列:recetas\u ingredientes.receta\u id
>>> 

非常感谢

在添加
receta
ForeignKey之前,您可能创建了模型并最初运行了
syncdb
syncdb
不会修改已创建的表。因为您只是在试验,所以可以删除已有的db表,然后再次运行
syncdb
,从头开始重新创建它们


您可以使用第三方South项目为您管理数据库迁移-此功能的一个版本将包含在将于2014年发布的Django 1.7中。

您是否运行了
/manage.py syncdb
?,如果是,您是否在syncdb之后为您的模型添加了一些字段?谢谢Daniel。经过深入分析,我发现错误在于我在数据库中创建了表,然后修改了模型。因此,在数据库中创建了包含错误列的正确表。这就是一切崩溃的方式。为了研究数据库中的内容,我使用sqlite3打开数据库、显示表、显示列和删除表。最后,在删除了错误创建的表之后,我再次重复了这个过程,现在一切正常。