Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django allauth针对不同用户类型的多重注册表单_Python_Django_Django Allauth - Fatal编程技术网

Python django allauth针对不同用户类型的多重注册表单

Python django allauth针对不同用户类型的多重注册表单,python,django,django-allauth,Python,Django,Django Allauth,我已经搜索了stackoverflow中的所有问题。然而,目前还没有人明确回答这个问题 我的应用程序包含2个用户类型,我添加了2个用户配置文件。 有人能告诉我如何制作2份报名表吗? 由于我是django的新手,我已经尝试了一些解决方案,但没有一个是有效的 我将python3.4与django 2.0.2一起使用 谢谢 我以前试过这些 #model.py class SupplierProfile(models.Model): user = models.OneToOneField(User, o

我已经搜索了stackoverflow中的所有问题。然而,目前还没有人明确回答这个问题

我的应用程序包含2个用户类型,我添加了2个用户配置文件。 有人能告诉我如何制作2份报名表吗? 由于我是django的新手,我已经尝试了一些解决方案,但没有一个是有效的

我将python3.4与django 2.0.2一起使用

谢谢

我以前试过这些

#model.py
class SupplierProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
#bio = models.TextField(max_length=500, blank=True)
nationality = CountryField()
company = models.CharField(max_length=50, unique=True, null=True, blank=True, default=None)
phone = models.CharField(max_length=50, unique=True, null=True, blank=True, default=None)
skype = models.CharField(max_length=50, unique=True, null=True, blank=True, default=None)
address = models.CharField(max_length=50, unique=True, null=True, blank=True, default=None)

def __str__(self):
    return self.user.email

@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        SupplierProfile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.supplierprofile.save()


#form.py
class SupplierSignUpForm(SignupForm):

first_name = forms.CharField(max_length=30, label='First name', required=False)
last_name = forms.CharField(max_length=30, label='Last name', required=False)
company = forms.CharField(max_length=50, required=True, strip=True)
phone = forms.CharField(max_length=50, required=True, strip=True)
skype = forms.CharField(max_length=50, required=True, strip=True)
address = forms.CharField(max_length=50, required=True, strip=True)

def save(self, request):
    user = super(SupplierSignUpForm, self).save(request)
    advertiser_user.save()
    user.account_type = 1
    user.save()
    return user

#view.py
class SupplierSignUp(SignupView):

template_name = 'accounts/signup_supplier.html'
form_class = SupplierSignUpForm
redirect_field_name = 'next'
view_name = 'supplier_sign_up'

def get_context_data(self, **kwargs):
    ret = super(SupplierSignUp, self).get_context_data(**kwargs)
    ret.update(self.kwargs)
    return ret

尝试此模型,它将生成公共配置文件(如果两个模型的选择相同)

型号

class Profile(models.Model):
    TYPE_CHOICES = (
        ('SUP', 'Supplier'),
        ('DIS', 'Distributer'),
    )
    type = models.CharField(max_length=3, choices=TYPE_CHOICES)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    #bio = models.TextField(max_length=500, blank=True)
    nationality = CountryField()
    company = models.CharField(max_length=50, unique=True, null=True, blank=True, default=None)
    phone = models.CharField(max_length=50, unique=True, null=True, blank=True, default=None)
    skype = models.CharField(max_length=50, unique=True, null=True, blank=True, default=None)
    address = models.CharField(max_length=50, unique=True, null=True, blank=True, default=None)
表格

class SignUpForm(SignupForm):
    type = forms.CharField(
    max_length=3,
    widget=forms.Select(choices=TYPE_CHOICES ),
    ) 
    first_name = forms.CharField(max_length=30, label='First name', required=False)
    last_name = forms.CharField(max_length=30, label='Last name', required=False)
    company = forms.CharField(max_length=50, required=True, strip=True)
    phone = forms.CharField(max_length=50, required=True, strip=True)
    skype = forms.CharField(max_length=50, required=True, strip=True)
    address = forms.CharField(max_length=50, required=True, strip=True)

    def save(self, request):
        user = super(SignUpForm, self).save(request)
        advertiser_user.save()
        user.account_type = 1
        user.save()
        return user

为什么你需要2份注册表格??发布您尝试过的代码因为我需要从这2类用户收集不同的信息,我需要使用2个注册表单。我刚刚更新了问题中的代码。这两种用户类型是什么??是否取决于用户帐户类型??用户类型为“供应商”和“分销商”。似乎我无法向auth_用户添加新字段。所以,我将其分为两个用户配置文件表。您如何决定显示哪个注册表单(要保存的用户类型)??是由后端决定还是由用户选择?