2017-09-04 8 views
0

MongoDBとdjongoを使ってPython、DjangoでWebサイトを作成しています。しかし、私はそれを行う間にエラーがあります。Django主キーエラー(djongoドライバ)

モデルにプライマリキーを設定しないと、ドキュメントを正常に追加できますが、Idert属性がNoneに設定されているため、オブジェクトを削除できません。データベース_IDフィールドが自動的に作成されます。 models.pyのprimary_key = Trueでプライマリキーを設定すると、文書を正常に削除できますが、挿入するとAssertionError(例外メッセージは出力されません)が得られます。

また、主キーが設定されていないと、管理パネルからドキュメントにアクセスできませんが、管理パネルからデータベースに追加できます。 pkがadminパネルから設定されている場合、私はアクセス、削除、編集できますが、新しい文書をデータベースに追加することはできません。

これは私のモデルである:

class DevList(models.Model): 
    dev_num = models.CharField(max_length = 200 , primary_key = True) 
    dev_name = models.CharField(max_length = 200) 
    dev_descr = models.CharField(max_length = 200) 
    dev_type = models.CharField(max_length = 200) 

***なしPKセットならば、私はprimary_key = Trueライン

を削除私の見解は、簡単な投稿フォームであると私は削除するように保存するためにd.save()を使用してd.delete()

私はこの問題をどこからでも検索しましたが、役に立たないものは見つかりませんでした。

PSは、私はこの質問

+0

これに対する回答が見つかったのか不思議です。私は同じことで苦労している。 – Ryan

答えて

0

実際には、デフォルトでDjangoはprimary keyとして設定デフォルトですべてのモデルでid場を提供するために、タグ「djongo」を作成を手伝ってください。

今、primary_key=Trueで他のフィールドを主キーとして設定できるようになったとき。しかし、よりスムーズな操作のために、unique=Trueを他のフィールドに使用するようアドバイスします。

dev_num = models.CharField(max_length = 200 , unique = True) 

希望すると助かります!

+0

私の場合、Django idフィールドがないようです(そうでなければ、エラーは出ません)。多分MongoDBの_idフィールドで上書きされるかもしれませんが、Djangoはidを見ないようにします(あるいは、idをNoneに設定してもわかりません)。だから私は明示的にPrimary_keyを設定しない場合、Djangoの管理パネルは全くidを見ません。ユニークを追加するとどちらも役に立ちませんが、同じエラーが発生します。 – Shepherd

+0

それは起こるべきではありませんが、それが事実であるかどうか私に見せてください。 –