首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加两个注册表单django-registration

添加两个注册表单django-registration
EN

Stack Overflow用户
提问于 2012-11-03 16:13:28
回答 2查看 106关注 0票数 0

我正在使用django-registration应用程序。我有两张注册表ABA具有默认注册字段。在B中,我添加了自定义字段和信号。下面的信号也对这两个注册表执行。这就是我添加if form.is_valid()的原因。这太糟糕了。我只想在调用BForm时执行。还有别的选择吗?有人能帮我改进这段代码吗?谢谢

代码语言:javascript
复制
class BForm(RegistrationForm):
    """
    Subclass of ``RegistrationForm``
    """
    phone = forms.CharField(max_length=100, required=False)

信号

代码语言:javascript
复制
def user_created(sender, user, request, **kwargs):
    form = BForm(request.POST)
    if form.is_valid():
        .....
user_registered.connect(user_created)
EN

回答 2

Stack Overflow用户

发布于 2012-11-04 00:17:08

根据Django's documentation on the topic,您可以简单地执行以下操作:

代码语言:javascript
复制
user_registered.connect(user_created, sender=BForm)

它应该是有效的。

票数 0
EN

Stack Overflow用户

发布于 2013-03-28 17:31:44

在提交两个表单时,信号将被执行。这是因为信号是在用户注册后从django-registrationregister视图发送的。因此,无论使用哪种形式,如果用户成功注册,信号user_registered都将被执行。

关于form.is_valid()的问题:

由于您在BForm的phone字段上设置了required=False,因此即使POST数据中没有phone,您的BForm也将是有效的,并且您的接收器函数user_created中的代码将被执行。

您可以对user_created进行以下更改,以确保只有在使用BForm时才执行接收器函数。

代码语言:javascript
复制
def user_created(sender, user, request, **kwargs):
    if 'phone' in request.POST:
        .....
        .....
user_registered.connect(user_created)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13207324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档