新しい (Flask) Web サイトに Peewee ORM を使用しようとしていますが、問題が発生しました。次のような単純なモデルを作成しました。
from peewee import TextField, DateTimeField, IntegerField, ForeignKeyField
from app import db
ROLE_USER = 0
ROLE_ADMIN = 1
class User(db.Model):
nickname = TextField()
email = TextField()
role = IntegerField(default = ROLE_USER)
class Post(db.Model):
body = TextField()
timestamp = DateTimeField()
user = ForeignKeyField(User, related_name='posts')
そこで、2 人のユーザーを作成した後、新しい投稿を作成したいと考えました。私はこれを次のようにしました:
>>> from app.models import User
>>> u = User(nickname='john', email='john@email.com', role=0)
>>> u.save()
>>> from app.models import Post
>>> from datetime import datetime as dt
>>> p = Post(body='FIPO!!', timestamp = dt.now(), author=u)
>>> p.save()
No handlers could be found for logger "peewee"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/peewee.py", line 2479, in save
ret_pk = self.insert(**field_dict).execute()
File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/peewee.py", line 1775, in execute
return self.database.last_insert_id(self._execute(), self.model_class)
File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/peewee.py", line 1470, in _execute
return self.database.execute_sql(sql, params, self.require_commit)
File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/peewee.py", line 1885, in execute_sql
return self.sql_error_handler(exc, sql, params, require_commit)
File "/Users/kramer65/dev/repos/microblog/flask/lib/python2.7/site-packages/peewee.py", line 1871, in sql_error_handler
raise exception
sqlite3.IntegrityError: post.user_id may not be NULL
私が理解する限り、peewee はこの権利を処理する必要があるため、user_id が明らかに NULL であることを理解していません。
私は何か間違ったことをしていますか (もしそうなら; 何?)、それとも peewee の問題ですか? すべてのヒントは大歓迎です!