【问题标题】:Django/RapidSMS Foreignkey not a column in tableDjango/RapidSMS 外键不是表中的列
【发布时间】:2013-07-09 14:08:21
【问题描述】:

所以我正在使用基于 Django 的 RapidSMS,我正在尝试将他们的教程结合起来,特别是 poll app in djangovoting app in rapidsms 我从投票开始,并尝试使用 django 中的代码对其进行扩展当我遇到麻烦时的教程。 (我在 Windows7 64 位、Django 1.5 和 SQLite3 上使用 python27)这是我在 vote.models 中的内容

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

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    def __unicode__(self):  
        return self.question
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    name = models.CharField(max_length=40, unique=True)
    votes = models.IntegerField(default=0)
    def __unicode__(self):
        return self.name

投票部分在管理员上显示良好,我可以输入问题和日期,但是当我尝试添加选项或触摸选项时,我收到错误“table vote_choice 没有名为 poll_id 的列”

在为 Choice 制作表格后,我添加了 poll = models.ForeignKey(Poll),经过一些研究后我认为这可能是问题(也许仍然存在)我得到的印象是表格没有被写入超过。所以这就是我所做的:

>manage.py sqlclear voting
BEGIN;
DROP TABLE "voting_choice";
DROP TABLE "voting_poll";

COMMIT;

>manage.py sql voting
BEGIN;
CREATE TABLE "voting_poll" (
    "id" integer NOT NULL PRIMARY KEY,
    "question" varchar(200) NOT NULL,
    "pub_date" datetime NOT NULL
)
;
CREATE TABLE "voting_choice" (
    "id" integer NOT NULL PRIMARY KEY,
    "poll_id" integer NOT NULL REFERENCES "voting_poll" ("id"),
    "name" varchar(40) NOT NULL UNIQUE,
    "votes" integer NOT NULL
)
;

COMMIT;

所以它/说/这里有那一栏。然后我同步数据库,迁移以获得良好的度量和运行服务器,或者外壳和任何一种方式输入投票问题/日期都很好,但是一旦我尝试添加选项或查看创建的投票,我就会收到上述错误。 投票肯定包含在 INSTALLED_APPS 中。所以作为一个 Django 新手,我迷路了。如果有人有更多的建议可以尝试,他们将不胜感激。

谢谢, 丽兹

【问题讨论】:

    标签: django python-2.7 django-models sqlite


    【解决方案1】:

    manage.py sql voting 说的是如果 Django 要创建表,将生成的 SQL。它不输出表的当前状态,也不应用它输出的 SQL。同样,manage.py sqlclear voting 显示了清除表的 SQL,但不将其应用于数据库。

    在为 Choice 制作表格后,我添加了 poll = models.ForeignKey(Poll)...

    你的问题。 syncdb 不会更改现有表。您需要自己更改表或删除并让 Django 重新创建它(如果您没有任何值得保留的数据)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-05
      • 2011-01-29
      • 2012-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多