2017-02-07 9 views
0
にmany2many更新にlast_changedフィールドを更新する方法

は、私は二つのモデルPizzaToppingを持っている想像してPizzaモデルはauto_now=TrueToppingManyToMany関係でlast_changedフィールドがあります。ジャンゴ

Pizzaに別のToppingを追加するたびにlast_changedフィールドを更新します。残念ながら、Pizzaモデルはこのような場合に保存されないため、これは自動的に更新されません。これは、ManyToManyの関係が別々の(自動作成された)モデルとテーブルに保持されているためです。

last_changedフィールドを更新するにはどうすればよいでしょうか?

答えて

0

Pizzaモデルには、Toppingを追加するたびに呼び出されるメソッドがあります。

class Pizza(models.Model): 
    toppings = models.ManyToManyField('Toppings', related_name="pizzas") 
    last_changed = models.DateTimeField(auto_now=True, blank=True) 
    # Your other fields here 

    def add_topping(self, topping): 
     self.toppings.add(topping) 
     self.save() # Which would update last_changed 

しかし、私はまたauto_nowsee this link)の使用に対して推薦します。

+0

ご返信いただき、ありがとうございます。私は誰もがadd_toppingメソッドを呼び出すように強制する方法を知っているだけです。これを強制しなければならない場合は、誰もが単にsave()を呼び出すように強制することができます。 – Fabian

+0

@ファビアン:どのように強制するのですか?あなたはコードを書いていませんか?私が理解できない場合は申し訳ありません –