How can you get the user who is saving record in django signals?
I am using signals to fill in data when a user marks completed = True
via a form.
I was hoping something like instance.User
or instance.CustomUser.username
would work, but it just throws errors that these don't exist in Maintenance
model.
models.py
from django.db import models
from accounts.models import CustomUser
from django.contrib.auth import get_user_model
from django.urls import reverse
from django.conf import settings
from django.db.models.signals import post_save
from django.utils.timezone import utc
import datetime
from django.utils import timezone
class Maintenance(models.Model):
device = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,)
customerTag = models.CharField(max_length=50,)
maintenanceItem = models.CharField(max_length=35,blank=True,)
maintenanceDescrip = models.TextField(max_length=300,blank=True,)
maintenanceNotes = models.TextField(max_length=300,blank=True,)
dateCreated = models.DateTimeField(auto_now_add=True,)
dateDue = models.DateTimeField(auto_now=False, auto_now_add=False, null=True, blank=True, editable=True)
dateCompleted = models.DateTimeField(auto_now=False, auto_now_add=False, null=True, blank=True, editable=True)
completed = models.BooleanField(default = False)
createdBy = models.CharField(max_length=35,blank=True,)
completedBy = models.CharField(max_length=35,blank=True,)
def __str__(self):
return str(self.maintenanceItem)
def get_absolute_url(self):
return reverse('equipmentdashboard',)
def check_complete(sender, instance,**kwargs):
hasCompleteDate = instance.dateCompleted
if not (hasCompleteDate is None):
return
else:
isComplete = instance.completed
if isComplete == True:
completed_By = ?
Maintenance.objects.filter(id = instance.id).update(completed = True, dateCompleted = timezone.now(), completedBy = completed_By,)
post_save.connect(check_complete, sender = Maintenance)