Closed menelike closed 11 years ago
Thanks for the feedback.
On Tue, Apr 23, 2013 at 10:51 PM, menelike notifications@github.com wrote:
Hello,
currently an update on the parent table doesn't update the children e.g. in mysql it results in "Cannot delete or update a parent row". Deletes work (warning in the admin menu doesn't include the children). Setting ON UPDATE CASCADE on the foreign key in mysql does the job, but breaks the concept of django with emulating the cascades.
Besides: Great work simone, you've got the only working compound PK solution working.
from compositekey import db from django.db import models
class Blog(models.Model): id = db.MultiFieldPK("title", "author") title = models.CharField(max_length=100) author = models.CharField(max_length=100)
class Meta: app_label = 'foo'
class Post(models.Model): post = models.CharField(max_length=100) blog = models.ForeignKey(Blog, to_field="id", fields_ext={ "author": {"db_column" :"author"}, "title" : {"db_column" :"title"}, }) class Meta: app_label = 'foo'
CREATE TABLE IF NOT EXISTS
solar_post
(id
int(11) NOT NULL AUTO_INCREMENT,title
varchar(100) NOT NULL,author
varchar(100) NOT NULL,post
varchar(100) NOT NULL, PRIMARY KEY (id
), UNIQUE KEYbar
(title
,author
), KEYsolar_post_841a7e28
(title
), KEYsolar_post_a5d5a658
(author
) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;OLD:
ALTER TABLE
solar_post
ADD CONSTRAINT
solar_post_ihgdbfk_1
FOREIGN KEY (title
,author
) REFERENCESsolar_blog
(title
,author
)NEW
ALTER TABLE
solar_post
ADD CONSTRAINTsolar_post_ihgdbfk_1
FOREIGN KEY (title
,author
) REFERENCESsolar_blog
(title
,author
) ON UPDATE CASCADE— Reply to this email directly or view it on GitHubhttps://github.com/simone/django-compositekey/issues/20 .
Hi Simone,
the reason I deleted the issue is that it isn't actually an issue. Django primary keys should be immutable, even on normal foreign key relations there is no ON UPDATE CASCADE feature in django itself. This results in that primary compund keys should be immutable too. In my case the primary keys are mutable, the CASCADE ON UPDATE is a database driven solution, but it's always the best solution to stay with immutable primary key(s) anyway.
Keep up the good work!
Regards
Hello,
currently an update on the parent table doesn't update the children e.g. in mysql it results in "Cannot delete or update a parent row". Deletes work (warning in the admin menu doesn't include the children). Setting ON UPDATE CASCADE on the foreign key in mysql does the job, but breaks the concept of django with emulating the cascades.
Besides: Great work simone, you've got the only working compound PK solution working.
from compositekey import db from django.db import models
class Blog(models.Model): id = db.MultiFieldPK("title", "author") title = models.CharField(max_length=100) author = models.CharField(max_length=100)
class Post(models.Model): post = models.CharField(max_length=100) blog = models.ForeignKey(Blog, to_field="id", fields_ext={ "author": {"db_column" :"author"}, "title" : {"db_column" :"title"}, }) class Meta: app_label = 'foo'
CREATE TABLE IF NOT EXISTS
solar_post
(id
int(11) NOT NULL AUTO_INCREMENT,title
varchar(100) NOT NULL,author
varchar(100) NOT NULL,post
varchar(100) NOT NULL, PRIMARY KEY (id
), UNIQUE KEYbar
(title
,author
), KEYsolar_post_841a7e28
(title
), KEYsolar_post_a5d5a658
(author
) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;OLD: ALTER TABLE
solar_post
ADD CONSTRAINTsolar_post_ihgdbfk_1
FOREIGN KEY (title
,author
) REFERENCESsolar_blog
(title
,author
)NEW: ALTER TABLE
solar_post
ADD CONSTRAINTsolar_post_ihgdbfk_1
FOREIGN KEY (title
,author
) REFERENCESsolar_blog
(title
,author
) ON UPDATE CASCADE