我的timesheet.html将包含ID,name,startDate和endDate变量。我希望在list_timesheet.html的表格中显示所有这些字段。但我有一个问题是显示相同的ID和相同名称多次具有不同的开始和结束日期。有没有人知道我应该怎么做我的models.py?现在我只能提交具有相同ID和名称ONCE的时间表,因为外键问题,当我尝试提交具有相同ID和名称但不同的开始和结束日期的时间表时,它将显示错误说“学生ID”和学生姓名已经存在“。
models.py
ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL,
PRIMARY KEY (`postcommit_si_flags_id`),
UNIQUE INDEX `software_ima' at line 5
SQL Statement:
CREATE TABLE `aci_dev`.`postcommit_si_flags` (
`postcommit_si_flags_id` INT NOT NULL AUTO_INCREMENT,
`software_image_id` INT UNIQUE NOT NULL,
`bypass_testcase_failure` TINYINT NOT NULL,
`base_meta` NOT NULL,
PRIMARY KEY (`postcommit_si_flags_id`),
UNIQUE INDEX `software_image_id_UNIQUE` (`software_image_id` ASC),
CONSTRAINT `software_image_id`
FOREIGN KEY (`software_image_id`)
REFERENCES `aci_dev`.`software_images` (`software_image_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
答案 0 :(得分:0)
当我尝试提交带有相同ID和姓名但不同的开始和结束日期的时间表时,会显示错误,上面写着“学生ID和学生姓名已存在”。
是的,Django引发错误,不是因为ForeignKey,而是因为字段studentID
设置为primary_key=True
。另外,还要从primary_key=True
模型中的ForeignKey中删除LTimesheet
。
如果你想保存多个具有相同ID和名称的Timesheet
个对象,那么我会建议模型有点像这样,
class Timesheet(models.Model):
studentID = models.CharField("Student ID", max_length=8, default="")
studentName = models.CharField("Student Name", max_length=500, default="", null=True, blank=True)
startDate = models.DateField("Start Date", max_length=8, null=True, blank=True)
endDate = models.DateField("End Date", max_length=8, null=True, blank=True)
def __str__(self):
return self.studentID
class LTimesheet(models.Model):
timesheet = models.ForeignKey(Timesheet, on_delete=models.CASCADE)
status = models.CharField("Status", max_length=100)