django-models - django 'User' 对象在使用 post_save 时没有属性 'profile'
问题描述
登录管理面板时显示此错误“'用户'对象没有属性'配置文件'”
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
# Create your models here.
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='student')
age = models.IntegerField(max_length=2)
standard = models.CharField(max_length=15)
def __str__(self):
return self.user.username
@receiver(post_save, sender=User)
def create_student_profile(sender, instance, created, **kwargs):
if created:
Student.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_student_profile(sender, instance, **kwargs):
instance.profile.save()
subject_choices = [
('math','math'),
('science','science'),
('physics','physics'),
]
class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='teacher')
subject = models.CharField(max_length=20, choices=subject_choices)
def __str__(self):
return self.user.username
@receiver(post_save, sender=User)
def create_teacher_profile(sender, instance, created, **kwargs):
if created:
Teacher.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_teacher_profile(sender, instance, **kwargs):
instance.profile.save()
batch_choices = [
('10','10:00 AM'),
('12','12:00 PM'),
('02','02:00 PM'),
('04','04:00 PM')
]
class Batch(models.Model):
b_name = models.CharField(max_length=20)
b_time = models.CharField(max_length=10, choices=batch_choices)
我还希望每当学生注册时,都会创建一个由其中的时间字段命名的批次,并且在每个第 41 个学生上,创建另一个具有下一次选择的批次
解决方案
推荐阅读
- azure - Cosmos Db:如何查询数组数组中某个属性的最大值?
- ios - 为什么惰性属性和 didSet 会以递归调用结束?
- javascript - Expo Typescript 不会构建项目,不会产生 outDir
- amazon-web-services - DBT访问分区S3
- unity3d - 无法解压缩 AssetBundle“内存”的数据。-- Unity3D AssetBundle 加载
- python - 我无法在 django 的 url 中传递值(id)
- pine-script - 输出“打开”或“关闭”的策略警报
- python - 在 post_init 中创建的数据类的属性的访问类型提示
- c# - Migradoc 标头和内容重叠
- discord.js - 无法读取未定义错误的属性“成员”