[解決済み] Djangoで - モデルの継承 - 親モデルの属性をオーバーライドすることはできますか?
2022-09-04 06:18:02
質問
これをやりたいと思っています。
class Place(models.Model):
name = models.CharField(max_length=20)
rating = models.DecimalField()
class LongNamedRestaurant(Place): # Subclassing `Place`.
name = models.CharField(max_length=255) # Notice, I'm overriding `Place.name` to give it a longer length.
food_type = models.CharField(max_length=25)
これは私が使いたいバージョンです(ただし、どんな提案でも歓迎します)。 http://docs.djangoproject.com/en/dev/topics/db/models/#id7
これは Django でサポートされていますか?もしそうでなければ、同様の結果を得る方法はありますか?
どのように解決するのですか?
更新された回答:コメントで指摘されたように、元の回答は質問に適切に答えていませんでした。確かに
LongNamedRestaurant
モデルだけがデータベースで作成されました。
Place
は作成されませんでした。
解決策としては、quot;Place" を表す抽象的なモデルを作成することです。
AbstractPlace
といった抽象的なモデルを作成し、それを継承することです。
class AbstractPlace(models.Model):
name = models.CharField(max_length=20)
rating = models.DecimalField()
class Meta:
abstract = True
class Place(AbstractPlace):
pass
class LongNamedRestaurant(AbstractPlace):
name = models.CharField(max_length=255)
food_type = models.CharField(max_length=25)
マークもお読みください。 回答 彼はなぜ非抽象クラスから継承された属性を変更することができないかについて素晴らしい説明をしています。
(これは Django 1.10 から可能になったことに注意してください: Django 1.10 以前には、抽象クラスから継承された属性を変更することはできませんでした)。
オリジナルの答え
Django 1.10 以降 が使えるようになりました。 可能 ! 頼まれたことをやればいいんです。
class Place(models.Model): name = models.CharField(max_length=20) rating = models.DecimalField() class Meta: abstract = True class LongNamedRestaurant(Place): # Subclassing `Place`. name = models.CharField(max_length=255) # Notice, I'm overriding `Place.name` to give it a longer length. food_type = models.CharField(max_length=25)
関連
-
[解決済み] Djangoです。モデルへの保存をオーバーライドする
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] 文字列から先頭と末尾のスペースを削除するには?
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] PySparkでデータフレームのカラムをString型からDouble型に変更する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Python 言語を決定するには?
-
[解決済み] Pythonの辞書にあるスレッドセーフについて