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