Я использую Django 3.0.2, база данных SQLite. Я создаю вес модели:
class Weight(models.Model):
user = models.ForeignKey(User,
on_delete=models.CASCADE)
date = models.DateField(auto_now_add=True)
last_modified = models.DateTimeField(auto_now=True)
weight = models.FloatField()
Моя цель - создавать строки на каждый день. Если я буду писать больше времени в день, будет обновляться только last_modified, а вес будет зависеть от user_id и даты.
Из командной строки я могу создать новую строку, но не могу ее обновить. Когда я пытаюсь это сделать:
Weight.objects.update_or_create(user_id=2, weight=123, date=date.today())
Weight.objects.update_or_create(user_id=2, weight=456, date=date.today())
Это создаст две строки:
1 2020-02-01 16:22:57.275688 123 2 2020-02-01
2 2020-02-01 16:23:02.925780 456 2 2020-02-01
Я ожидаю одну строку в выводе:
1 2020-02-01 16:22:57.275688 456 2 2020-02-01
Если я использую обновление вместо update_or_create , я могу обновить его.
Кто-нибудь может мне помочь объяснить, почему он не работает? Может быть, я что-то упустил, но не могу понять.