[英]reverse lookup django models
i have ImageShoot and Image model.我有 ImageShoot 和 Image 模型。 I am trying to add reverse lookup like which Image belongs to which ImageShoot.
我正在尝试添加反向查找,例如哪个图像属于哪个 ImageShoot。 one ImageShoot can have multiple Images
一个 ImageShoot 可以有多个 Image
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:管理.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
this admin.py showing error:这个 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'
It may seem a bit complicated in the code, but basically I'm iterating over the related images and generate a link for each of them, and finally join all the links together and return it:代码中可能看起来有点复杂,但基本上我是遍历相关图像并为每个图像生成一个链接,最后将所有链接连接在一起并返回它:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.