Django не работает каскадом при удалении

Я все больше и больше понимаю, что я все еще нуб Django, я не могу понять, что происходит с моей моделью данных и почему не происходит каскадного удаления. Вот моя модель.

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

А вот и моя функция удаления

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"))

Итак, к каждому потоку прикреплены сообщения, и все потоки, содержащие связанные сообщения (т.е. ответы), связаны с идентификатором потока, который представляет собой случайно сгенерированную строку . Все больше и больше осознавая, что я все еще новичок в Django, я не могу понять, что происходит с моей моделью данных и почему не происходит каскадного удаления. Вот моя модель. сообщение класса (модели ....

Я все больше и больше понимаю, что я все еще нуб Django, я не могу понять, что происходит с моей моделью данных и почему не происходит каскадного удаления. Вот моя модель.

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

А вот и моя функция удаления

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"))

Итак, к каждому потоку прикреплены сообщения, и все потоки, содержащие связанные сообщения (т.е. ответы), связаны с идентификатором потока, который представляет собой случайно сгенерированную строку . Все больше и больше осознавая, что я все еще новичок в Django, я не могу понять, что происходит с моей моделью данных и почему не происходит каскадного удаления. Вот моя модель. сообщение класса (модели ....

Я все больше и больше понимаю, что я все еще нуб Django, я не могу понять, что происходит с моей моделью данных и почему не происходит каскадного удаления. Вот моя модель.

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

А вот и моя функция удаления

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"))

Итак, к каждому потоку прикреплены сообщения, и все потоки, содержащие связанные сообщения (т.е. ответы), связаны с идентификатором потока, который представляет собой случайно сгенерированную строку . Все больше и больше осознавая, что я все еще новичок в Django, я не могу понять, что происходит с моей моделью данных и почему не происходит каскадного удаления. Вот моя модель.

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

А вот и моя функция удаления

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"))

Итак, к каждому потоку прикреплены сообщения, и все потоки, которые содержат связанные сообщения (т. Е. Ответы), связаны с идентификатором потока, который является случайно сгенерированной строкой. Все больше и больше осознавая, что я все еще новичок в Django, я не могу понять, что происходит с моей моделью данных и почему не происходит каскадного удаления. Вот моя модель.

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

А вот и моя функция удаления

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"))

Итак, к каждому потоку прикреплены сообщения, и все потоки, которые содержат связанные сообщения (т. Е. Ответы), связаны с идентификатором потока, который является случайно сгенерированной строкой. Поэтому, когда я удаляю, я получаю начальный идентификатор потока (автоматически сгенерированный идентификатор django), а затем использую его для получения уникального идентификатора потока и удаления всех записей, содержащих этот идентификатор потока. Однако, когда я удаляю поток, он не выполняет автоматическое каскадирование и не удаляет связанные объекты сообщения.

Странно то, что раньше он работал, но потом перестал работать, я не совсем понимаю почему. Есть идеи?

6
задан john m. 2 October 2010 в 20:59
поделиться