Istiak Fahim
Istiak Fahim

Reputation: 72

How to insert data on OneToOne relatiotion model in Django?

I have extended User model. Model name is userextend. I wanted to add two more field. Here is my userextend model.

class userextend(models.Model):
    user= models.OneToOneField(User, on_delete=models.CASCADE)
    major = models.CharField(max_length=50)
    student_id = models.CharField(max_length=20)

After user completed the registration, I want to run register function from views.py and want to save major and student_id on userextend model.
views.py:

def register(request):
    form = CreateUserForm()
    if request.method =='POST':
            form = CreateUserForm(request.POST)
            major = request.POST.get('major')
            student_id = request.POST.get('student_id')
            if form.is_valid():
                b = userextend.objects.create(user=form,major=major,student_id=student_id) #I tried this                               
                form.save()
                
    context = {'form': form}
    return render(request, 'library_site/register.html',context)

Upvotes: 1

Views: 497

Answers (1)

p14z
p14z

Reputation: 1810

You have to save the user first, if there is no user you can't create the relationship:

def register(request):
    ...
    if form.is_valid():
        user = form.save()
        b = userextend.objects.create(user=user, major=major, student_id=student_id)
    ...

Upvotes: 2

Related Questions