I have created a model with the ArrayField
in Django Model. I am using PostgreSQL
for the database.
I want to create new rows in the database or update the existing rows.
But I can not insert or append data to the ArrayField
.
Model
JavaScript
x
15
15
1
class AttendanceModel(BaseModel):
2
"""
3
Model to store employee's attendance data.
4
"""
5
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='attendance_user')
6
date = models.DateField()
7
time = ArrayField(models.TimeField(), blank=True, null=True)
8
9
class Meta:
10
unique_together = [['user', 'date']]
11
12
def __str__(self):
13
return f'{self.user.username} - {self.date}'
14
15
View
JavaScript
1
6
1
attend, created = models.AttendanceModel.objects.get_or_create(user=fingerprint.user, date=attendance_date)
2
3
attend.time = attend.time.append(attendance.timestamp.time())
4
5
attend.save()
6
The time
field does not being created or updated with the new value.
How can I do this?
Advertisement
Answer
Following this Answer I did this.
JavaScript
1
8
1
from django.db.models import Func, F, Value
2
.
3
.
4
.
5
attend, created = models.AttendanceModel.objects.get_or_create(user=fingerprint.user, date=attendance_date)
6
attend.time = Func(F('time'), Value(attendance.timestamp.time()), function='array_append')
7
attend.save()
8