我试图在创建一个独立模型实例时,使用信号自动创建一个关系模型实例(中间表多对多)。但是关系模型中的一个外键是登录用户,我无法访问信号文件中的请求对象。也许还有另一个没有信号,但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()
尝试:
在命令行运行之前,必须安装getpass:
相关问题 更多 >
编程相关推荐