我有ImageShoot和Image模型。我正在尝试添加反向查找,例如哪个Image属于哪个ImageShoot。一个ImageShoot可以有多个图像
class ImageShoot(models.Model):
name = models.CharField(max_length=100)
created_at = models.TimeField(auto_now_add=True)
def __str__(self):
return self.name
class Image(models.Model):
license_type = (
('Royalty-Free','Royalty-Free'),
('Rights-Managed','Rights-Managed')
)
image_number = models.CharField(default=random_image_number,max_length=12)
title = models.CharField(max_length = 100)
image = models.ImageField(upload_to = 'home/tboss/Desktop/image' , default = 'home/tboss/Desktop/image/logo.png')
category = models.ForeignKey('Category', null=True, blank=True, on_delete=models.CASCADE)
shoot = models.ForeignKey(ImageShoot, on_delete=models.CASCADE, related_name='Image')
image_keyword = models.TextField(max_length=1000)
credit = models.CharField(max_length=150, null=True)
location = models.CharField(max_length=100, null=True)
license_type = models.CharField(max_length=20,choices=license_type, default='')
uploaded_at = models.TimeField(auto_now_add=True)
def __str__(self):
return self.title
admin.py:
@admin.register(ImageShoot)
class Imageset(admin.ModelAdmin):
list_display = ('name','created_at','associated_image')
def Imageset(self, obj):
associated_image = ImageShoot.image_set.all()
return associated_image
此admin.py显示错误:
<class 'image.admin.Imageset'>: (admin.E108) The value of 'list_display[2]' refers to 'associated_image', which is not a callable, an attribute of 'Imageset', or an attribute or method on 'image.ImageShoot'
答案 0 :(得分:0)
代码中的代码似乎有点复杂,但是基本上我正在遍历相关图像并为每个图像生成一个链接,最后将所有链接连接在一起并返回它:
from django.utils.html import format_html
@admin.register(ImageShoot)
class Imageset(admin.ModelAdmin):
list_display = ('name','created_at','associated_images')
def associated_images(self, obj):
associated_images = obj.image_set.all()
links = []
for image in associated_image
url = reverse('admin:<your_app_name>_image_change', args = [image.id]
links.append(format_html("<a href='{}'>{}</a>", url, image.title))
return ', '.join(links)