Ich erkenne mehr und mehr, dass ich immer noch ein Django Noob bin, ich kann nicht scheinen, um herauszufinden, was mit meinem Datenmodell geschieht und warum es nicht Kaskadierung löscht. Hier ist mein Modell.
class message(models.Model):
msg_text = models.CharField(max_length = 9900)
date_time = models.DateTimeField()
is_read = models.BooleanField(default=False)
class thread(models.Model):
message = models.ForeignKey(message)
subject = models.CharField(max_length=160)
from_user = models.ForeignKey(User, related_name = 'from_user')
to_user = models.ForeignKey(User, related_name = 'to_user')
thread_id = models.CharField(max_length = 36)
def __unicode__(self):
return self.subject
Und dann ist da noch meine Löschfunktion
def delete_message(request, thread_id):
t = thread.objects.get(id=thread_id)
thread.objects.filter(thread_id = t.thread_id).delete()
return HttpResponseRedirect(reverse("inbox.views.index"))
Jeder Thread ist also mit Nachrichten verknüpft, und alle Threads, die zusammenhängende Nachrichten (d.h. Antworten) enthalten, sind alle mit einer Thread-ID verknüpft, die eine zufällig generierte Zeichenfolge ist. Wenn ich also lösche, erhalte ich die ursprüngliche Thread-ID (von Django automatisch generierte ID) und verwende sie dann, um die eindeutige Thread-ID zu ermitteln und alle Einträge zu löschen, die diese Thread-ID enthalten. Wenn ich jedoch den Thread lösche, werden die zugehörigen Nachrichtenobjekte nicht automatisch gelöscht.
Das Seltsame ist, dass es vorher funktionierte, aber dann nicht mehr, ich bin mir nicht ganz sicher, warum. Irgendwelche Ideen?