django - 在表上插入或更新违反外键约束(错误)
问题描述
我正在尝试将表单数据保存到 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 很陌生,谢谢
视图.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)
模型.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
表格.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),
}
返回错误:
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
。
推荐阅读
- laravel - yajra/laravel-datatables filterColumn 不起作用
- wso2 - WSO2 EI 6.5 0- 更改端口 - 服务调用未发生
- reactjs - Formik - 名称和 ID 未传递到字段
- windows - Windows 打印 gpu/cpu/网络使用情况的命令
- mobile - OneSignal(推送通知总是展开)
- python - 应用程序崩溃而没有错误或关闭事件
- apache-nifi - 需要在 NiFi 中使用 1 个处理器而不是 5 个 FetchHDFS
- linux - 是否可以使用“which”命令执行“cd”命令?(我想将这两个命令合二为一。)
- google-chat - [Google Chatbot]发布聊天机器人时出现未列出的错误
- google-smart-home - google Local home 本地 SDK 设备发现