Django有没有办法在我的项目的signals.py文件中获取当前登录的用户?

2024-05-31 23:44:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在创建一个独立模型实例时,使用信号自动创建一个关系模型实例(中间表多对多)。但是关系模型中的一个外键是登录用户,我无法访问信号文件中的请求对象。也许还有另一个没有信号,但idk。如有任何建议,我们将不胜感激。UserAccount是一个自定义用户模型。这是密码

models.py

from datetime import datetime
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from apps.accounts.models import UserAccount

class Patient(models.Model):
    name = models.CharField(max_length=50)
    userAccount = models.ManyToManyField('accounts.UserAccount', through='Therapy')


class Therapy(models.Model):
    patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
    userAccount = models.ForeignKey(UserAccount, on_delete=models.CASCADE)
    createdDate = models.DateTimeField(auto_now_add=True)

signals.py

from django.db.models.signals import post_save
from django.dispatch import receiver
from .models import Patient, Therapy

@receiver(post_save, sender=Patient)
def create_therapy(sender, instance, created, **kwargs):
    if created:
        Therapy.objects.create(patient=instance, userAccount=request.user)

@receiver(post_save, sender=Patient)
def save_therapy(sender, instance, **kwargs):
    instance.patient.save()

Tags: djangoinstancefrom模型importdb信号models