gpt4 book ai didi

django - 创建一个内联管理,显示最终模型而不是 GenericForeignKey 链接表

转载 作者:行者123 更新时间:2023-12-03 07:10:12 27 4
gpt4 key购买 nike

下面的模型显示了一个简单的 GenericForeignKey 关系。它以这种方式设置,以允许任何其他模型重用图像。

class Image(models.Model):
name = models.CharField(max_length=150)
desc = models.TextField(max_length=400)
resource = models.ImageField(upload_to='imgs/generic/%Y/%m/%d')

def __unicode__(self):
return self.name

class ImageItem(models.Model):
image = models.ForeignKey(Image, related_name='items', db_index=True)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField(db_index=True)
object = generic.GenericForeignKey('content_type','object_id')

class Meta:
unique_together = (('image', 'content_type', 'object_id'),)

def __unicode__(self):
return u'%s [%s]' % (self.object, self.image)

class ImageInline(generic.GenericTabularInline):
model = ImageItem

目前,在另一个模型的管理员中使用 ImageInline 将显示一个包含系统内所有图像的列表框。

是否可以让内联管理显示实际的图像模型,仅显示分配给正在编辑的模型的图像?因此,允许用户立即查看附加到正在添加/编辑的模型的图像的所有相关信息。以及能够添加/删除相关图像。

预先感谢您在这方面的帮助。

最佳答案

您必须将代码更改为:

class Image(models.Model):
name = models.CharField(max_length=150)
desc = models.TextField(max_length=400)
resource = models.ImageField(upload_to='imgs/generic/%Y/%m/%d')
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField(db_index=True)
object = generic.GenericForeignKey('content_type','object_id')

class Meta:
unique_together = (('resource', 'content_type', 'object_id'),)

def __unicode__(self):
return u'%s [%s]' % (self.object, self.resource)


class ImageInline(generic.GenericTabularInline):
model = Image


class MyModelAdmin(admin.ModelAdmin):
inlines = [
ImageInline,
]

这样,当您在管理中添加/更改 MyModel 时,您可以将图像添加为内联。

更新:

带有文件浏览器字段的解决方案:

class Image(models.Model):
name = models.CharField(max_length=150)
desc = models.TextField(max_length=400)
resource = FileBrowseField("Image", max_length=200, directory="imgs/generic/%Y/%m/%d", extensions=['.jpg', '.gif', '.png'], format='Image')
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField(db_index=True)
object = generic.GenericForeignKey('content_type','object_id')

class Meta:
unique_together = (('resource', 'content_type', 'object_id'),)

def __unicode__(self):
return u'%s [%s]' % (self.object, self.resource)


class ImageInline(generic.GenericTabularInline):
model = Image


class MyModelAdmin(admin.ModelAdmin):
inlines = [
ImageInline,
]

有关 filebrowser 字段的更多信息可以在此处找到:http://code.google.com/p/django-filebrowser/wiki/installationfilebrowsefield

关于django - 创建一个内联管理,显示最终模型而不是 GenericForeignKey 链接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3849656/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com