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 --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---