【发布时间】:2020-06-06 13:09:18
【问题描述】:
我正在使用 Django 3,这是我的用户配置文件模型
from django.db import models
from django.contrib.auth.models import User
from datetime import datetime
from django.db.models.signals import post_save
from django.utils.text import slugify
from django.db.models import signals
# Create your models here.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=1000,blank=True)
created_at = models.DateTimeField(default=datetime.now())
slug = models.SlugField(blank=True)
img = models.ImageField(upload_to='userimg/',default='userimg/avatar.png')
def __str__(self):
return "%s" % self.user
def save(self, *args, **kwargs):
self.slug = slugify(self.user)
super(Profile, self).save(*args, **kwargs)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.get(user=instance)
post_save.connect(create_user_profile, sender=User)
def delete_user(sender, instance=None, **kwargs):
try:
instance.user
except User.DoesNotExist:
pass
else:
instance.user.delete()
signals.post_delete.connect(delete_user, sender=Profile)
问题是函数 create_user_profile 只为新用户创建配置文件,但不为旧用户创建配置文件,那么我该如何解决这个问题?
【问题讨论】:
-
您可以制作编辑配置文件表单并让用户为旧用户手动添加它..我认为唯一的解决方案
-
我正在寻找一种自动的方式,我不想手动这样做
-
@Ninou:首先,很好地使用信号是一种反模式:lincolnloop.com/blog/django-anti-patterns-signals
标签: python django backend django-users django-3.0