Многократный ввод данных в Django ORM
Я пытался создать способ, при котором моя база данных Django будет хранить данные в течение 7 дней подряд, потому что я хочу использовать ее для построения недельного графика, но проблема в том, что в Django нет поля даты и времени, которое бы это делало.
В принципе, я хочу, чтобы каждый раз, когда я нажимаю на ссылку, я сохранял количество переходов по ссылке и сохранял дату, когда была нажата конкретная ссылка, но при сохранении я получаю нулевую ошибку, и из-за этой ошибки я также не могу создать недельный график анализируя количество кликов, я хочу сохранить ежедневное количество кликов в течение семи дней, но у меня ошибка null
Вы здесь пытаетесь сохранить None
/NULL
в базе данных поля, значение которых не может быть равно нулю, вы можете сделать их обнуляемыми с помощью:
class SevenDayData(models.Model):
day1_date = models.DateField(null=True, default=None)
day1_value = models.CharField(null=True, max_length=20)
day2_date = models.DateField(null=True, default=None)
day2_value = models.CharField(null=True, max_length=20)
day3_date = models.DateField(null=True, default=None)
day3_value = models.CharField(null=True, max_length=20)
day4_date = models.DateField(null=True, default=None)
day4_value = models.CharField(null=True, max_length=20)
day5_date = models.DateField(null=True, default=None)
day5_value = models.CharField(null=True, max_length=20)
day6_date = models.DateField(null=True, default=None)
day6_value = models.CharField(null=True, max_length=20)
day7_date = models.DateField(null=True, default=None)
day7_value = models.CharField(null=True, max_length=20)
# updating the model each time the row is saved
updated_at = models.DateTimeField(auto_now=True)
Но модель не должна быть озабочена тем, как вводить данные, она должна сосредоточиться на том, как хранить данные. Вы просто сохраняете отдельные записи, например:
class DayData(models.Model):
day_date = models.DateField()
day_value = models.CharField(max_length=20)
таким образом, вы вставляете отдельные данные.
Если вы хотите получить данные за последние семь дней, вы можете запросить их с помощью:
DayData.objects.filter(day_date__gte=datetime.now().date()-timedelta(days=7))
или, если вы хотите, чтобы последние семь записей содержали:
DayData.objects.order_by('-day_date')[:7]