0

Python と Django を使用して単純なフォーラムに取り組んでいますが、Post のデータベース エントリを作成するときに小さな問題が発生しています。

(python manage.py shell):
     >>> from forums.models import User,Category,Post

     >>> nu = User(username="daniel", password="test")
     >>> nu.user_ip = "127.0.0.1"
     >>> nu.save()
     >>> User.objects.all()
         [<User: daniel>]

     >>> c = Category(category_name="Default")
     >>> c.save()
     >>> Category.objects.all()
         [<Category: Default>]

     >>> p = Post(post_name="Test", post_content="Hello, world", category=Category.objects.get(pk=1), poster=User.objects.get(pk=1))
     >>> p.save()

「/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py」、344行目、 in execute return Database.Cursor.execute(self, query, params) DatabaseError: テーブル forums_post に category_id という名前の列がありません

これは私のmodels.pyファイルです:

from django.db import models
from datetime import date

class User(models.Model):
    username = models.CharField(max_length=200, unique=True)
    password = models.CharField(max_length=300)
    creation_date = models.DateField(default=date.today)
    user_ip = models.IPAddressField()

    def __unicode__(self):
        return self.username

class Category(models.Model):
    category_name = models.CharField(max_length=50)

    def __unicode__(self):
        return self.category_name

class Post(models.Model):
    post_name = models.CharField(max_length=150)
    post_content = models.CharField(max_length=500)
    category = models.ForeignKey(Category)
    poster = models.ForeignKey(User)

    def __unicode__(self):
        return self.post_name

列「category_id」を見つけようとしているのはなぜですか? すべての助けに感謝します。

4

1 に答える 1

2

db_column外部キーを定義するときにa を指定しない限り、Django は_idDB をクエリしようとするときに、指定した属性名に追加します。

私はあなたのDBであなたの列が呼ばれていると推測していますcategory

列名を次のように変更するかcategory_id、カテゴリの外部キーを定義できます。

category = models.ForeignKey(Category, db_column='category')
于 2013-02-24T22:25:12.360 に答える