как определить пользователя, который создал запись в модели django? - PullRequest
0 голосов
/ 08 января 2020

Я работаю над созданием приложения для уведомлений. Работает с использованием django сигналов. Всякий раз, когда создается новый экземпляр модели, я вызываю код, который создаст новый экземпляр моей модели уведомлений. Эти данные уведомлений затем фильтруются и отображаются на моей странице уведомлений. Теперь проблема заключается в том, что всякий раз, когда создается новый экземпляр модели, для самого создателя создается уведомление, что не имеет смысла. Поэтому я думаю, можно ли как-то передать параметр request.user в мой сигнал. Вот мой код для лучшей иллюстрации проблемы:

Вот моя модель уведомлений:

class Notifications(models.Model):
time = models.DateTimeField(auto_now=True)
target = models.ForeignKey(User , on_delete=models.CASCADE)
message = models.TextField()
object_type = models.CharField(max_length=100)
object_url = models.CharField(max_length=500,default = 'test')
is_read = models.BooleanField(default=False)

Вот мой сигнал, я думал добавить что-то вроде метода .exclude как показано ниже:

def CreateSalesTaskNotification(sender, **kwargs):
    if kwargs['action'] == "post_add" and kwargs["model"] == SalesExtra:    
        print(kwargs['instance'].salesExtra.all())
        for person in kwargs['instance'].salesExtra.all().exclude(user = request.user):
            Notifications.objects.create(
                                        target= person.user,                    
                                        message='You have been assigned a task.',
                                        object_type = 'sales_task')
m2m_changed.connect(CreateSalesTaskNotification, sender=SalesTask.salesExtra.through)

Вот моя модель SalesTask:

class SalesTaskingComments(models.Model):
comment_id = models.AutoField(primary_key=True)
salesExtras = models.ForeignKey('SalesExtra',on_delete=models.CASCADE)
salesTask= models.ForeignKey('SalesTask',on_delete=models.CASCADE)
comment = models.TextField(max_length=200 , default='your notes')
date_time = models.DateTimeField(auto_now=True)

def __str__(self):
    return str(self.comment_id)

def get_absolute_url(self):
    return reverse('task-details', kwargs={'pk':self.salesTask.task_id})

Не удивительно, что я столкнулся с ошибкой, заявив, что запрос не определен. Есть ли практическое решение этой проблемы?

...