1. ホーム
  2. python

django のモデルで使用する __init__ 関数を書く

2023-08-21 10:29:51

質問

私は __init__ 関数でオブジェクトを作成しようとしています。

p = User('name','email')

モデルを書くと

def __init__(self, name, email, house_id, password):
    models.Model.__init__(self)
    self.name = name
    self.email = email

これはうまくいって、オブジェクトをデータベースに保存することができます。 User.objects.all() を呼び出すと、何も表示されません。 __init__ 関数を削除しない限り、何も表示されません。何かいい方法はないでしょうか?

どのように解決するのですか?

Django の組み込み機能に依存し、名前付きパラメータを渡すのが最もシンプルな方法でしょう。

p = User(name="Fred", email="[email protected]")

しかし、もしキーストロークを節約することを目的としているのであれば、イニシャライザをいじる代わりに、静的な便利メソッドをクラスに追加することをお勧めします。

# In User class declaration
@classmethod
def create(cls, name, email):
  return cls(name=name, email=email)

# Use it
p = User.create("Fred", "[email protected]")