Ich realisiere immer mehr, dass ich immer noch ein Django noob bin, ich kann nicht herausfinden, was mit meinem Datenmodell passiert und warum es nicht kaskadiert löscht. Hier ist mein Modell.Django nicht kaskadieren auf löschen
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 hier 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"))
So hat jeder Thread Nachrichten an sie gebunden, und alle Fäden, die im Zusammenhang Nachrichten enthalten (dh Antworten) sind alle mit einem Thread-ID Zusammenhang die ist eine zufällig generierte Zeichenfolge. Also, wenn ich lösche, bekomme ich die anfängliche Thread-ID (django automatisch generierte ID) und verwende sie dann, um die eindeutige Thread-ID zu erfassen 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 kaskadiert und gelöscht.
Die komische Sache ist, dass es vorher funktioniert hat, aber dann aufgehört zu arbeiten, ich bin mir nicht sicher, warum. Irgendwelche Ideen?