关于Django:在表上插入或更新违反外键约束(错误)

Insert or update on table violates foreign key constraint (error)

我正在尝试将表单数据保存到Postgres表\\'Student_Events \\'中,该表通过外键链接到\\'Student_INFO表\\',但继续收到完整性错误:

\\'在表" entry_student_event "上插入或更新违反了外键约束" entry_student_event_nsn_id_2499e7fd_fk_entry_student_info_id "
详细信息:表" entry_student_info "中不存在键(nsn_id)=(123556789)。\\'

Student_INFO中有一个学生的nsn为\\'123556789 \\',因此我不确定在该表中为什么它"不存在"。任何帮助将不胜感激,因为我对Django和PostgresSQL还是很陌生,
谢谢

Views.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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

1
2
3
4
5
6
7
8
9
10
11
12
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),
            }

返回错误:

1
2
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".


感谢@BearBrown解决它! student.nsn应该是student.pk