2017-08-03 20 views
1

にエラーを返します:空の整数フィールドは、私はこのフィールドを持っている私のDjangoのモデルの一つでGraphQL

version = models.PositiveSmallIntegerField(blank=True, null=True)

それをテストするために、私は手動でDBBrowserを経由して新しいレコードを作成しましたSQLiteの場合、フィールドを空白のままにします。私は、オブジェクトにGraphQLクエリを発行する場合

が、私は戻ってこのエラーメッセージを受信:等の0または1または2、に空のフィールドを更新

"errors": [ { "message": "could not convert string to float: " } ] 

を、エラーメッセージが消えました。

空のフィールドはエラーとはみなされません。特に、フィールド定義で空である可能性があると具体的に述べているためです。デフォルト値の0(ゼロ)に足りない場合、これを修正してエラーメッセージを取り除くにはどうすればよいですか?

ロバート

答えて

0

SQLiteはgraphene.Intを扱うことができないあなたのversion列で、代わりにNULLの、空の文字列を格納しています。普通にdjangoはあなたがそれを保存するときにこれを起こさせません。外部で作成された値について心配したい場合は、モデルにリゾルバを追加して、空の文字列の代わりにNoneが返されるようにすることができます。

class MyModel(DjangoObjectType): 

    @graphene.resolve_only_args 
    def resolve_version(self): 
     return self.version or None 
+0

私はもちろんあなたを信じています。私にとって奇妙なのは、文字列が整数フィールドに格納される可能性があることです。そんなことがあるものか? テストデータベースを削除してDjangoに最初から再作成させる必要がありました。 Voila、エラーは表示されなくなりました。新しいレコードを作成し、 'version'値を指定しないと、' null'がバージョンフィールドに表示されます。 –

+0

@Robert_LY Sqliteはこれを可能にするので、sqliteエディタなどで実行できますが、djangoでは実行できません。 [こちら](https://dba.stackexchange.com/questions/106364/text-string-stored-in-sqlite-integer-column)を読むことができます。 – vikki

+0

私はそれを認識しませんでした。それから間違いなく私がやっていた手動編集の結果。ありがとう! –

関連する問題