我々は、一般的なスーパーモデルクラスを持っている:カスタムユーザーモデルでdjango loaddataがサイレントモードで失敗するのはなぜですか?
class UUIDObject(models.Model):
id = SimpleUUIDField(primary_key=True, default=uuid.uuid4)
objects = InheritanceManager()
UUIDObjectは、文字列値に関するより寛容でDjangoのUUIDFieldの簡単な専門であるmodel_utilsからInheritanceManagerとSimpleUUIDFieldを使用しています。
UUIDObjectを使用すると、モデルタイプを気にすることなくモデルインスタンスをidで取得できます。
アプリのユーザーモデルは、このようにUUIDObjectから継承:
from django.contrib.auth.models import AbstractUser, UserManager as DjangoUserManager
from model_utils.managers import InheritanceManager
class UserManager(InheritanceManager, DjangoUserManager):
pass
class User(AbstractUser, UUIDObject):
objects = UserManager()
再要因の上に開発者を維持するために、我々は利便性のために開発者の治具を保ちます。これは例えばdjango-admin.py dumpdata core.user --indent 2 > devs.json
で簡単に作成され、結果のファイルは正しく見えます。例えばdjango-admin.py loaddata devs
のように再ロードされた場合、フィクスチャのロードは成功として報告されるが、オブジェクトはテーブルに追加されない。冗長フラグを使用すると、フィクスチャ内の各ユーザレコードが2回追加されていることがわかります(ソートは理にかなっています - ルートテーブル用と依存テーブル用)。
loaddataが黙って失敗し、成功したように見えているようです。
が、これはあなたがそれがに関連することができる – e4c5
を使用しているサードパーティ製のアプリとは何かであること、それは可能性が高いではないですdjangoのフィクスチャがrawデータを処理する方法(オブジェクトマネージャや通常のsaveメソッドを使用せずにモデルを保存する)ですが、私は特別な保存メソッドを使用していません。オブジェクトマネージャはオブジェクト作成とは関係なくすべてクエリーセットに関するものです。 –