django - 信号好像不行,老实说试了很多
问题描述
为网站创建用户模型身份验证,使用信号自动创建但似乎没有被触发,创建了困惑的用户,但不是个人资料这次有人可以帮助我吗
模型.py
class InterestChoice(models.Model):
INTEREST_CHOICES = (
('A', 'traveling'),
('B', 'exercise'),
)
interest = models.CharField(max_length=1, choices=INTEREST_CHOICES, unique=True)
def __str__(self):
return self.get_interest_display()
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
dob = models.DateField()
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES, null=True)
interests = models.ManyToManyField(InterestChoice)
def __str__(self):
return f"{self.user.username} Profile"
def save(self):
super().save()
信号.py
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Profile
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user = instance)
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
instance.profile.save()
这是apps.py 代码apps.py
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
def ready(self):
import users.signals
解决方案
推荐阅读
- java - java中的对象属性修改
- questdb - 从 node.js 写入时,时间戳在 QuestDB 中显示为 1970
- flutter - 扑。GridView.builder 为空时如何折叠(没有任何元素)
- javascript - 在 React.js 中一个接一个地播放音频文件
- javafx - 没有 EntityFactory 有注解 @Spawns() 的方法
- python - Python 从文本文件中读取用户输入
- c# - 如何在c#中从网页中提取特定行
- vb.net - 从 string 类型到 double 类型的转换无效
- csv - 将逗号插入文本文件以创建 .csv
- selenium - Selenium java中的语言翻译