如何在 Django 管理员 ListView 中将 True 值更改为绿色检查
Posted
技术标签:
【中文标题】如何在 Django 管理员 ListView 中将 True 值更改为绿色检查【英文标题】:How to change True value into green check in the Django admin ListView 【发布时间】:2019-12-18 11:50:32 【问题描述】:models.py
class Example(models.Model):
sort = models.PositiveIntegerField(default=0, blank=False, null=False)
created = models.DateTimeField(editable=False)
modified = models.DateTimeField(editable=False)
online = models.BooleanField(default=True)
title = models.CharField(max_length=300, blank=True)
slug = models.SlugField(max_length=255, blank=True, unique=True)
main_image = models.ImageField(upload_to='images', blank=True)
def __str__(self):
return self.title
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
if not self.id:
self.created = timezone.now()
self.modified = timezone.now()
super().save(*args, **kwargs)
def image_tag(self):
if self.main_image:
return True
else:
return False
如您所见,您是否有在线 BooleanField
- 它会将 True 或 False 更改为绿色或红色。我怎样才能实现 - 当我的 ImageField 为空时它会做同样的事情。我创建了一个 image_tag
方法,该方法将返回 True 或 False,但不确定下一步该做什么 - 我是否需要覆盖模板 - 有没有办法做到这一点?
【问题讨论】:
【参考方案1】:正确的方法是在方法本身上设置boolean
属性。您还应该确保该方法始终返回一个布尔值。
def image_tag(self):
return bool(self.main_image)
image_tag.boolean = True
(这已记录在案,但无法链接到确切位置:请参阅list_display
部分的大约一半。)
【讨论】:
我看到了很好的解决方案,那么它如何识别真假?如果是 False 则设置为 False,如果为 True 则设置为 true。 我不明白你的问题。这就是它的作用。 上面的代码只有在它为真时才起作用——如果它是假的,我需要该代码也显示红十字,我已经更新了问题。 更新了答案;你的方法应该总是返回一个布尔值,而不是无。以上是关于如何在 Django 管理员 ListView 中将 True 值更改为绿色检查的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Django generic.ListView 中的用户前端获取参数?
如何在ListView中正确使用get_context_data来获取Django中的相关实例