「ユーザー」モデルを使用して「ユーザー」コレクションにデータを追加したデータベース「タンブルログ」(mongoengine を使用) があります。
デシベル.ユーザー.find()
...
{ "_id" : ObjectId("4fb0c9494ca88402dd000000"), "_types" : [ "User" ], "first_name" : "John", "last_name" : "Doe", "_cls" : "User", "email" : "jdoe@example.com" }
{ "_id" : ObjectId("4fb0cb9d4ca88402ec000000"), "_types" : [ "User" ], "first_name" : "Joe30", "last_name" : "Foe", "_cls" : "User", "email" : "hu@huu.com" }
django シェルで試してみるとUser.objects
、次のエラーが表示されます。
Traceback (most recent call last):
File "<console>", line 1, in <module>
File ".../mongoengine/queryset.py", line 1127, in __getitem__
return self._document._from_son(self._cursor[key])
File ".../mongoengine/base.py", line 1018, in _from_son
obj = cls(**data)
TypeError: __init__() keywords must be strings
やってみると同じこと
for user in User.objects:
print user.first_name
- - 編集 - -
私はこれを試しました
>>> users = User.objects
>>> users.count()
7
>>> users.first()
...
TypeError: __init__() keywords must be strings
---- 編集 2 ----
この方法でプロジェクトをインストールしました:
> virtualenv Test
> source Test/bin/activate
> pip install Django
> pip install mongoengine
> cd Test/
> django-admin.py startproject db
次に、行を追加しました
from mongoengine import *
connect('tumblelog')
settings.py で、この単純なモデルを作成しました
from mongoengine import *
class User(Document):
email = StringField(required=True)
name = StringField(max_length=50)
次に、サーバーを実行します
> python manage.py runserver
そして、シェル (python manage.py シェル) では、モデル クラスをインポートするとデータを保存できますが、それを読み取ることができません。常に同じ TypeError: init () キーワードは文字列でなければなりません!
-----django-mongodb エンジンへの切り替え----
解決策が見つからなかったため、django-mongodb-engine を使用します。比較は見つかりませんでしたが、両方を試してみましたが、非常に似ています。django-mongodb-engine が継承の原則を処理しないことを後悔しています。
私は何を間違っていますか?前もって感謝します!