how to give a user a model field to choose from during signup?

13 views
Skip to first unread message

AJD

unread,
Mar 10, 2018, 8:31:35 AM3/10/18
to Django users

how to make a user registration form including a model field in it as a required field?


like i want 

college

field to show up on registration page as a drop-down menu


my models.py


class Profile(models.Model):
    user
= models.OneToOneField(User, on_delete=models.CASCADE)
    college
= models.ForeignKey(College, on_delete=models.CASCADE)


@receiver(post_save, sender=User)
def update_user_profile(sender, instance, created, **kwargs):
   
if created:
       
Profile.objects.create(user=instance)
    instance
.profile.save()


class College(models.Model):
    col
= models.CharField(max_length=100)

   
def __str__(self):
       
return self.col




my forms.py


class UserForm(UserCreationForm):
    col
= College.objects.all()
    password1
= forms.CharField(widget=forms.PasswordInput)
    password2
= forms.CharField(widget=forms.PasswordInput)
    college
= forms.ChoiceField(widget=forms.Select(choices=col))

class Meta:
    model
= User
    fields
= ('username', 'college', 'password1', 'password2',)


and the views.py includes this:


def signup(request):
if request.method == 'POST':
    form
= SignUpForm(request.POST)
   
if form.is_valid():
        user
= form.save()
        user
.refresh_from_db()
        user
.save()
        raw_password
= form.cleaned_data.get('password1')
        user
= authenticate(username=user.username, password=raw_password)
        login
(request, user)
       
return redirect('home')
else:
    form
= SignUpForm()
return render(request, 'registration_form.html', {'form': form})


Reply all
Reply to author
Forward
0 new messages