Django admin добавление записи с помощью сигнала
У меня нет проблем с сохранением записи при входе пользователя, проблема в том, что, например, пользователь входит в систему 19 июня 2022 года 8 утра и случайно выходит из системы, и если этот пользователь входит снова, я не хочу, чтобы данные вставлялись снова, я просто хочу, чтобы вставлялась 1 запись в день, даже если пользователь входит несколько раз
class UserLogs(models.Model):
user = models.OneToOneField(User, related_name="profile", on_delete=models.CASCADE)
time_in = models.DateTimeField(null=True, blank=True)
time_out = models.DateTimeField(null=True, blank=True)
@receiver(user_logged_in)
def post_login(sender, request, user, **kwargs):
print(user)
insert = UserLogs(
fullname = user,
time_in = datetime.now()
)
print(insert.id)
if insert.id.exists():
insert.save()
else:
print('dont save!')
Вы можете проверить, вошел ли пользователь в систему сегодня:
from django.utils import timezone
@receiver(user_logged_in)
def post_login(sender, request, user, **kwargs):
now = timezone.now()
old_record = UserLogs.objects.filter(
fullname=user, time__date=now.date(),
).first()
if old_record is not None:
# Already logged in today
return # or update if you need
# Otherwise create new record
UserLogs.objects.create(
fullname=user,
time_in=now,
)
Обратите внимание, что обработка дат может привести к неожиданным результатам, если ваши пользователи находятся в разных часовых поясах. Он будет сверять даты с часовым поясом сервера (настройка TIME_ZONE
).