私はいくつかの共通の機能を持つモデルをいくつか持っています。各モデルは物理的にストックされたタイプのアイテムなので、stock
のようなものを共有し、低在庫警告イベント(電子メールを送信)などのいくつかのものを共有します。Django:子のフィールドラベルまたはhelp_textをオーバーライドするモデル
コードを複製するのではなく、抽象モデルを書いてそれから継承しました。
class LowStockModel(models.Model):
stock = stock = models.IntegerField()
out_of_stock_behaviour = models.CharField(max_length=20, choices=[...])
class Meta:
abstract = True
def save(self, *args, **kwargs):
super(self.__class__, self).save(*args, **kwargs)
if self.stock <= 0:
#...
私の問題は、私はラベルを変更したり、私が産卵てる子クラスで異なるhelp_text
からstock
フィールドを追加する必要があります。クライアント(およびそのスタッフ)がユニットに関する指示を必要とするため、これは非常に重要です。私は子供の周りで騒ぎを試みた__init__
しかし、私はどこにも得ていない。
tl; drフィールドのラベルを子モデルからどのように変更できますか?継承はジャンゴで使用したいことがあり、抽象クラスから作られるとき
'super(self .__ class__、self)'あなたは簡単に無限再帰を得ることができます。 – DrTyrsa
それはきれいではありませんが、http://stackoverflow.com/a/928774/16361 – AdamKG
おかげで@AdamKGそれは完璧です。 – Oli