2016-06-23 18 views
0

違いがある場合は、私は以下の関数を使ってモデルを更新しています。 しかし、私がdjangoシェルまたはadminで見ることができるモデルのインスタンスへの更新があっても。最後の更新のフィールドは更新し、それが作成されたとき、それはauto_now=TrueDjangoモデルが最後に更新され、正しく更新されませんでした。

def create_or_update_if_diff(self, model, defaults=None, **lookup): 
    defaults = defaults or {} 
    instance, created = model.objects.get_or_create(**lookup, defaults=defaults) 
    if created: 
     self.log_database_create(instance) 
     return instance 
    else: 
     for key, value in defaults.items(): 
      attr = getattr(instance, key) 
      if key == 'end_date_fixed' and value: # Quick fix for Tariff type dif 
       value = parse_date(value) # Ideally should compare serialised vs serialised 
      if attr != value: 
       # If any change detected update all for efficiency 
       model.objects.filter(**lookup).update(**defaults) 
       self.log_database_update(instance) 
       instance.refresh_from_db() 
       return instance 
     return instance 

モデル使っているにもかかわらず、立ち往生しているように見えるしません:

class ProductPrices(models.Model): 
unique_id = models.IntegerField(unique=True) 
name = models.ForeignKey(Product) 
payment_method = models.ForeignKey(PaymentMethod) 

# prices exclude VAT 
unit_price = models.DecimalField(max_digits=6, decimal_places=4, null=True) 

saving = models.DecimalField(max_digits=6, decimal_places=2) 
saving_percentage = models.DecimalField(max_digits=4, decimal_places=2) 

units = models.IntegerField() 

last_updated = models.DateTimeField(auto_now=True) 

答えて

関連する問題