Python Django一般关系不起作用

Python Django一般关系不起作用,python,django,django-models,django-contenttypes,Python,Django,Django Models,Django Contenttypes,我的应用程序中有以下模型,使用内容类型django框架: class GenericMedia(models.Model): limit = models.Q(model = 'Image') | models.Q(model = 'Video') | models.Q(model = 'Other') content_type = models.ForeignKey(ContentType, limit_choices_to = limit)

我的应用程序中有以下模型,使用内容类型django框架:

class GenericMedia(models.Model):
    limit           = models.Q(model = 'Image') | models.Q(model = 'Video') | models.Q(model = 'Other')
    content_type    = models.ForeignKey(ContentType, limit_choices_to = limit)
    object_id       = models.PositiveIntegerField()
    content_object  = generic.GenericForeignKey('content_type', 'object_id')

    def __unicode__(self):
        return u"%s" % os.path.basename(self.content_object.url.name)

    def instance(self):
        return self.content_object.__class__.__name__


class Media(models.Model):
    description     = models.CharField(blank = True, max_length = 500)
    link            = models.URLField(blank = True)
    genericFK       = generic.GenericRelation(GenericMedia, content_type_field='content_type', object_id_field='object_id')

    class Meta:
        abstract = True

    def __unicode__(self):
        return u"%s" % os.path.basename(self.url.name)

    def save(self, *args, **kwargs):
        super(Media, self).save(*args, **kwargs)
        generic_link = GenericMedia(content_object = self)
        generic_link.save()


class Image(Media):
    imgW = models.PositiveSmallIntegerField()
    imgH = models.PositiveSmallIntegerField()
    url  = models.ImageField(upload_to = 'mediamanager', height_field = 'imgH', width_field = 'imgW')
除了我的抽象媒体课程中的一般关系外,一切都很好。 django文件中说:

如果删除具有GenericRelation的对象,则 将GenericForeignKey指向它也将被删除

但我的问题是,当我删除图像时,指向它的GenericMedia不会被删除


如果有人有解决方案,谢谢

正如您所提到的,文档清楚地说明了删除具有泛型关系字段的对象时会发生什么情况(Django删除了所有具有泛型关系对象外键的对象)

所以这基本上是Django的错(可能是抽象类的一些问题),但有一种方法可以克服这种情况

通过使用
pre_delete
可以删除所有具有通用关系对象外键的对象


可以在此处找到
pre_delete
信号的一些示例:

请添加您正在使用的Django的特定版本,以及指向说明删除的文档的链接。我怀疑这是一个文档版本号和代码不同的问题,因为我不记得自己在文档中看到过这一行(尽管我可能弄错了)。我使用的是V1.6.1和OK的链接,我想这毕竟不是版本问题。还有一个问题,当你在问题中说“当我删除图像时”,你是指媒体对象,而不是图像对象,对吗?是的,我通过django管理界面删除媒体对象。但媒体只是一个抽象类,图像扩展了它(媒体不存在于数据库中)哦,我明白了。。。那么,我看不出你明显做错了什么。这很容易被证明是从抽象类继承的泛型关系中的真正错误。