13

Django で符号なし整数フィールドを使用する方法はありますか? これは、0 から 4294967295 の範囲のモデル内のフィールドを意味し、32 ビットを格納します。PositiveIntegerFieldこの定義では、範囲が 0 ~ 2147483647 しかないため、を除外してbigIntegerFieldいます。また、大量のメモリを浪費するため、 a を使用しないことを好みます。

4

3 に答える 3

9

私の知る限り、Django の符号なし整数フィールドはPositiveIntegerFieldとだけPositiveSmallIntegerFieldで、どちらも小さすぎます。必要なものを取得するには、おそらくカスタム フィールドを確認する必要があります。そのためのドキュメントはこちらです。カスタム フィールドを作成するときに非常に役立つことの 1 つは、公式の django モデル フィールドの 1 つのコードを確認することです。それらはすべてで見つけることができますdjango/db/models/fields/__init__.py

私はいくつかのコードを投稿しますが、それがあなたが必要とするものであると確信するのに十分なカスタムフィールドの経験がありません. がんばれ!

于 2013-09-21T04:37:37.883 に答える
3

Django 2.2 以降、カスタム フィールドの作成方法に関する公式ドキュメントがあります。最良の部分は、ここに作成の例があることUnsignedAutoFieldです。Django 2.0 での私のユース ケースでは、このスニペットで十分でした。

from django.db.models.fields import AutoField

class UnsignedAutoField(AutoField):
    def db_type(self, connection):
        return 'integer UNSIGNED AUTO_INCREMENT'

    def rel_db_type(self, connection):
        return 'integer UNSIGNED'

お役に立てれば。

于 2019-05-25T15:34:23.153 に答える