#30524: on_delete doesn't work properly with MySql.
-------------------------------+--------------------------------------
Reporter: dheeraj135 | Owner: nobody
Type: Bug | Status: new
Component: Uncategorized | Version: 2.2
Severity: Normal | Resolution:
Keywords: Foreign Key | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+--------------------------------------
Changes (by dheeraj135):
* keywords: Foreign Key, indexes => Foreign Key
Old description:
> Model:
>
> {{{
> class Attempt(models.Model):
> student = models.ForeignKey(Student, models.CASCADE,
> related_name='quiz_attempts',null=False)
> quiz =
> models.ForeignKey(Quiz,on_delete=models.CASCADE,related_name='quiz_attempts')
> score = models.FloatField()
> over = models.BooleanField(default=False)
> date = models.DateTimeField(auto_now_add=True)
> currquestion =
> models.ForeignKey(Question,null=True,default=None,on_delete=models.SET_NULL)
>
> class Meta:
> indexes = [
> models.Index(fields=['student']),
> models.Index(fields=['quiz']),
> ]
>
> }}}
> Table created in MySql:
>
> {{{
> CREATE TABLE `classroom_attempt` (
> `id` int(11) NOT NULL AUTO_INCREMENT,
> `score` double NOT NULL,
> `over` tinyint(1) NOT NULL,
> `date` datetime(6) NOT NULL,
> `currquestion_id` int(11) DEFAULT NULL,
> `quiz_id` int(11) NOT NULL,
> `student_id` int(11) NOT NULL,
> PRIMARY KEY (`id`),
> KEY `classroom_a_student_1a21bc_idx` (`student_id`),
> KEY `classroom_a_quiz_id_eef64a_idx` (`quiz_id`),
> KEY `classroom_attempt_currquestion_id_545301ef_fk_classroom`
> (`currquestion_id`),
> CONSTRAINT `classroom_attempt_currquestion_id_545301ef_fk_classroom`
> FOREIGN KEY (`currquestion_id`) REFERENCES `classroom_question` (`id`),
> CONSTRAINT `classroom_attempt_quiz_id_e227b203_fk_classroom_quiz_id`
> FOREIGN KEY (`quiz_id`) REFERENCES `classroom_quiz` (`id`),
> CONSTRAINT `classroom_attempt_student_id_a4dc81cd_fk_classroom` FOREIGN
> KEY (`student_id`) REFERENCES `classroom_student` (`user_id`)
> ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
> +-------------------+---------------------
> }}}
>
> As you can notice, indexes and models.CASCADE is not applied.
New description:
Model:
{{{
class Attempt(models.Model):
student = models.ForeignKey(Student, models.CASCADE,
related_name='quiz_attempts',null=False)
quiz =
models.ForeignKey(Quiz,on_delete=models.CASCADE,related_name='quiz_attempts')
score = models.FloatField()
over = models.BooleanField(default=False)
date = models.DateTimeField(auto_now_add=True)
currquestion =
models.ForeignKey(Question,null=True,default=None,on_delete=models.SET_NULL)
class Meta:
indexes = [
models.Index(fields=['student']),
models.Index(fields=['quiz']),
]
}}}
Table created in MySql:
{{{
CREATE TABLE `classroom_attempt` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`score` double NOT NULL,
`over` tinyint(1) NOT NULL,
`date` datetime(6) NOT NULL,
`currquestion_id` int(11) DEFAULT NULL,
`quiz_id` int(11) NOT NULL,
`student_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `classroom_a_student_1a21bc_idx` (`student_id`),
KEY `classroom_a_quiz_id_eef64a_idx` (`quiz_id`),
KEY `classroom_attempt_currquestion_id_545301ef_fk_classroom`
(`currquestion_id`),
CONSTRAINT `classroom_attempt_currquestion_id_545301ef_fk_classroom`
FOREIGN KEY (`currquestion_id`) REFERENCES `classroom_question` (`id`),
CONSTRAINT `classroom_attempt_quiz_id_e227b203_fk_classroom_quiz_id`
FOREIGN KEY (`quiz_id`) REFERENCES `classroom_quiz` (`id`),
CONSTRAINT `classroom_attempt_student_id_a4dc81cd_fk_classroom` FOREIGN
KEY (`student_id`) REFERENCES `classroom_student` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------------------+---------------------
}}}
As you can notice models.CASCADE is not applied.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/30524#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/068.6aae07dca151807adb1948de382b82a9%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.