Django, установка даты набора форм/объекта вручную
Я хочу сделать простое приложение для автомехаников, но у меня есть проблема, которую я не могу решить самостоятельно, так как я новичок. Начнем с того, что у меня есть список услуг, оказанных автомобилю, и использованных запчастей, сгруппированных по дням в аккордеоне bootstrap (как здесь https://ibb.co/8XWJx1S). В окне редактирования я беру все услуги и запчасти за один определенный день. В шаблоне редактирования я могу добавлять наборы форм динамически (https://ibb.co/qBKL4Tk). Проблема в том, что когда я добавляю новую услугу или деталь во время редактирования, она сохраняется с другой датой, а затем в представлении списка она не группируется с услугами, которые я хочу, так как ее дата отличается. Есть ли способ установить эту дату вручную, чтобы она была такой же, как и у других объектов? Второй вариант, нежелательный, но приемлемый - обновить DATE.FIELD других объектов на основе новой даты, я пробовал, но безуспешно
models.py
class Service(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
car = models.ForeignKey(Car, on_delete=models.CASCADE)
service_name = models.CharField(max_length=150, verbose_name='Service', default=None)
service_price = models.DecimalField(max_digits=20, decimal_places=2, default=None)
date_added = models.DateField(auto_now_add=True)
def __str__(self):
return self.service_name
def save(self, *args, **kwargs):
"""Update parent model date_updated field whenever child object is added/edited"""
self.car.save(update_fields=['date_updated'])
super(Service, self).save(*args, **kwargs)
class CarPart(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
car = models.ForeignKey(Car, on_delete=models.CASCADE)
car_part = models.CharField(max_length=30, blank=True, null=True, verbose_name='Part')
part_price = models.DecimalField(max_digits=20, decimal_places=2, null=True, blank=True)
pdate_added = models.DateField(auto_now_add=True)
def __str__(self):
return f"Part: {self.car_part} Price: {self.part_price}"
views.py
Решил, что если у кого-то возникнет проблема с этим в будущем. Мой первый подход к этому был правильным, который заключается в добавлении этих строк в UpdateView ДО ВЫЗОВА f.save()
f.date_added = self.kwargs.get('date')
Из-за этого в моделях date_added = models.DateField(auto_now_add=True) не работало.
Я исследовал это и, похоже, auto_now_add не редактируется.
Поэтому я изменил его на date_added = models.DateField(default=datetime.date.today)