On Jul 26, 4:24 pm, Nis Jørgensen <[EMAIL PROTECTED]> wrote: > AnaReis skrev: > > > Hi all! > > I have a delete that isn't working properly. It deletes more than 1 > > register when it shouldn't because I'm specifying the primary key in > > the filter. > > The class file is this: > > class UserInstrument(models.Model): > > user_name = models.CharField(primary_key=True, maxlength=60) > > instrument_name = models.CharField(blank=False, maxlength=60) > > permission = models.TextField(blank=True) > > def __str__(self): > > string="user_name: "+self.user_name+"; instr_name: > > "+self.instrument_name+"; permission: "+self.permission > > return string > > class Meta: > > db_table = 'User_instrument' > > unique_together = (("user_name", "instrument_name"),) > > In the view function I'm doing this: > > UserInstrument.objects.filter(user_name__exact=username, > > instrument_name__exact=itemid).delete() > > > Oh and another detail, in the MySQL table, the primary key is the > > user_name and the instrument_name together. > > I am not sure whether this is the cause of your problem, but > > - Django doesn't support multi-field primary keys > - Your model class tells Django that "user_name" alone is the primary > key, which is wrong (and will lead to strange primary key lookups). > - Django implements its own cascading delete, independent of the > database. In this I believe it loops throught the queryset, and deletes > the objects based on the primary key. Since you "lied" to it about what > the PK is, it deletes the wrong objects. > > Quick solution: Remove the primary_key=True from the model - this will > add the standard "id" autonumber field. > > Slow solution: Add support for multi-field primary keys to the database. > > Nis Hi, It would be much easier to just put an autonumber field, the problem is that I can't change the database. In the database, the primary key is a multi field primary key, it's the user_name and the instrument_name, and unfortunately I can't change this. The way I found to fix this was to put primary_key=True in all the fields that are actually primary keys. Now it works properly. Thanks for your help! Ana --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---