2

I am trying to save form data into a postgres table 'Student_Events' that is linked via foreign key to the 'Student_INFO table' but keep on receiving an integrity error:

'insert or update on table "entry_student_event" violates foreign key constraint "entry_student_event_nsn_id_2499e7fd_fk_entry_student_info_id" DETAIL: Key (nsn_id)=(123556789) is not present in table "entry_student_info".'

There is one student in Student_INFO that has the nsn '123556789' so I am unsure to why it "is not present" in that table. Any help would be greatly appreciated as I am quite new to Django and PostgresSQL, thanks

Views.py:

def Grouplist(request):
    student_list = Student_INFO.objects.order_by('name')
    
    for student in student_list:
        if request.method == 'POST':
            form = EntryForm(request.POST)
            context = {
                'student_list':student_list, 
                'form': form
            }
            if form.is_valid(): 
                event_save = form.save(commit=False)
                event_save.nsn_id = student.nsn
                event_save.save()
                return redirect('grouplist')      
        else:
            form = EntryForm()
            context = {
                'student_list':student_list, 
                'form': form
            }
    return render(request, 'grouplist.html', context)

Models.py:

class Student_INFO(models.Model):
    nsn = models.IntegerField(blank = False)
    birthdate = models.DateField("BirthDate", blank = False)
    name = models.CharField(max_length=30, blank = False)
    age_catagory = models.CharField(max_length=8, blank = True, default = '')
    grouproom = models.CharField(max_length=3, blank = False)
    year_lvl = models.IntegerField(blank = False)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name


class Student_Event(models.Model):
    nsn = models.ForeignKey(Student_INFO, on_delete=models.CASCADE)
    event1 = models.CharField(max_length=15, blank=False, default = '')
    event2 = models.CharField(max_length=15, blank=False, default = '')
    event3 = models.CharField(max_length=15, blank=False, default = '')
    event4 = models.CharField(max_length=15, blank=False, default = '')
    event5 = models.CharField(max_length=15, blank=False, default = '')
    event6 = models.CharField(max_length=15, blank=False, default = '')
                                                                        
    def __str__(self):
        return self.nsn

Forms.py

class EntryForm(forms.ModelForm):
    class Meta:
        model= Student_Event
        fields= ["event1", "event2", "event3", "event4", "event5", "event6"]
        widgets = {
            'event1':forms.Select(choices=EVENT_CHOICES),
            'event2':forms.Select(choices=EVENT_CHOICES),
            'event3':forms.Select(choices=EVENT_CHOICES),
            'event4':forms.Select(choices=EVENT_CHOICES),
            'event5':forms.Select(choices=EVENT_CHOICES),
            'event6':forms.Select(choices=OPEN_CHOICES),
            }

Returns the error:

insert or update on table "entry_student_event" violates foreign key constraint "entry_student_event_nsn_id_2499e7fd_fk_entry_student_info_id"
DETAIL:  Key (nsn_id)=(123556789) is not present in table "entry_student_info".
2

1 Answer 1

2

Thank you @BearBrown for solving it! student.nsn should be student.pk.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.