Как добавить значение к полю ArrayField в Django с помощью PostgreSQL?

Я создал модель с помощью ArrayField в Django Model. Я использую PostgreSQL для базы данных. Я хочу создавать новые строки в базе данных или обновлять существующие строки. Но я не могу вставить или добавить данные в ArrayField.

Модель

class AttendanceModel(BaseModel):
    """
    Model to store employee's attendance data.
    """
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='attendance_user')
    date = models.DateField()
    time = ArrayField(models.TimeField(), blank=True, null=True)

    class Meta:
        unique_together = [['user', 'date']]

    def __str__(self):
        return f'{self.user.username} - {self.date}'

Вид

attend, created = models.AttendanceModel.objects.get_or_create(user=fingerprint.user, date=attendance_date)

attend.time = attend.time.append(attendance.timestamp.time())

attend.save()

Поле time не создается и не обновляется новым значением.

Как я могу это сделать?

attend.time = attend.time.append(attendance.timestamp.time())

Здесь возвращаемое значение list.append(...) присваивается attend.time, которое является None, таким образом attend.time не обновляется.

Попробуйте вместо этого,

attend, created = models.AttendanceModel.objects.get_or_create(
    user=fingerprint.user, date=attendance_date
)
attend.time.append(attendance.timestamp.time())
attend.save()

После этого Ответа я сделал вот что.

from django.db.models import Func, F, Value
.
.
.
attend, created = models.AttendanceModel.objects.get_or_create(user=fingerprint.user, date=attendance_date)
attend.time = Func(F('time'), Value(attendance.timestamp.time()), function='array_append')
attend.save()
Вернуться на верх