【发布时间】:2014-04-09 20:08:27
【问题描述】:
假设,这是一个模型作为ContentType 的外键:
class Photo(models.Model):
user = models.ForeignKey(User)
description = models.TextField()
image = models.ImageField(upload_to=get_upload_file_name)
pub_date = models.DateTimeField(auto_now=True, auto_now_add=False)
这是ContentType的模型:
class Entry(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
pub_date = models.DateTimeField()
content_object = generic.GenericForeignKey('content_type','object_id')
每当创建新照片或状态时,也会创建一个新的Entry。现在,我想要的是,每当我删除Photo/Status 的实例时,我想从Entry 中删除与该照片/状态相关的对象?我该怎么做?
我试过了:
def delete_entry(sender, **kwargs):
instance = kwargs['instance']
try:
si = Entry.objects.get(object_id=instance.id)
si.delete()
except Entry.DoesNotExist:
si = None
有时它的工作。但有时我会再次收到错误:
MultipleObjectsReturned
get() returned more than one Entry -- it returned 2!
所以,我想,这不是这样做的方式。请帮我解决这个问题。谢谢!
【问题讨论】:
标签: django django-queryset django-orm django-contenttypes