添加两个注册表格django-registration

时间:2012-11-03 08:13:28

标签: django django-registration

我正在使用django-registration应用。我有两个注册表单ABA具有默认注册字段。在B中,我添加了自定义字段和信号。以下信号也同时执行两种登记表格。这就是我添加if form.is_valid()的原因。它糟透了。我想只在调用BForm时才执行。还有其他选择吗?任何人都可以帮我改进这段代码吗?感谢

class BForm(RegistrationForm):
    """
    Subclass of ``RegistrationForm``
    """
    phone = forms.CharField(max_length=100, required=False)

信号

def user_created(sender, user, request, **kwargs):
    form = BForm(request.POST)
    if form.is_valid():
        .....
user_registered.connect(user_created)

2 个答案:

答案 0 :(得分:0)

根据Django's documentation on the topic,你可以这样做:

user_registered.connect(user_created, sender=BForm)

它应该有用。

答案 1 :(得分:0)

提交两个表格后,信号将被执行。发生这种情况是因为在用户注册后从register django-registration视图发送信号。因此,无论使用何种形式,如果用户成功注册,将执行信号user_registered

关于form.is_valid()的问题:

由于您在required=False字段上有phone,即使POST数据中没有phone,您的BForm也会生效,并且您的收件人中的代码也是如此函数user_created将被执行。

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

def user_created(sender, user, request, **kwargs):
    if 'phone' in request.POST:
        .....
        .....
user_registered.connect(user_created)