【发布时间】:2021-04-02 07:42:23
【问题描述】:
我想在创建模型字段时自动更新它。所以这就是我的情况。我有一个自定义用户模型,我的客户可以使用它来登录。登录后,他们将转到包含表单链接的帐户/个人资料页面。目前,当用户提交表单时,它会创建一个 LevelTest 模型的实例(这是我网站运行所需要的)。这是表单的视图类:
class LevelTestView(generic.CreateView):
template_name = "leads/leveltest.html"
form_class = LevelTestModelForm
def get_success_url(self):
return reverse("profile-page")
这里是 LevelTestModelForm:
class LevelTestModelForm(forms.ModelForm):
class Meta:
model = LevelTest
fields = (
'first_name',
'last_name',
'age',
'username',
)
我要自动填写的是用户名字段。事实上,我希望当用户输入时它甚至不会出现在表单本身。username 是用户模型中的一个字段,所以我只希望新的 LevelTest 的username 字段填充当前用户的用户名。因此,我使用了如下所示的 post_save 信号(不起作用):
def post_leveltest_created_signal(sender, instance, created, **kwargs):
if created:
instance.objects.update(
username=instance.user.username,
description='Add Description',
phone_number=instance.user.cellphone,
email=instance.user.username,
)
post_save.connect(post_leveltest_created_signal, sender=LevelTest)
我希望你们能帮我调整一下 post_save 信号,这样当用户创建 LevelTest 实例时,LevelTest 的用户名字段(以及 phone_number 和电子邮件)都会填写用户模型的信息。非常感谢!
【问题讨论】:
标签: python django django-views django-forms signals