比较来自世界各地的卖家的域名和 IT 服务价格

Django admin TabularInline - 添加自定义列有很好的方法 html?

我有一个模特 /
Entry

/, 其中包含一个简单的属性:


@property
def image/self/:
return str/self.id/+"_"+self.round.season.name+"_"+self.round.theme+"_"+self.person.name


我用它来构建特定图像图像文件的名称。 所以我知道
/path/to/images//model.image///.jpg

会有一个图像

我可以显示属性本身 raw image V型号 TabularInline 在管理页面上,将其添加到集合中 readonly_fields, 但是如何获得我有自定义的列 html, 围绕模型的属性?

例如。


<img src="/images/{{model.image}}.jpg"/>
已邀请:

诸葛浮云

赞同来自:

您可以做的是在子类中创建一种方法
TabularInline

, 返回必要的你 HTML, 然后使用此方法的名称
image


ImageInline

.
fields

:


from django.utils.safestring import mark_safe

class ImageInline/admin.TabularInline/:
...
fields = /..., 'render_image'/
readonly_fields = /..., 'render_image'/

def render_image/self, obj/:
return mark_safe/"""<img src="/images/%s.jpg"/>""" % obj.image/

董宝中

赞同来自:

根据当前 Django 1.2+ 我犯了错误 "Form does not have such field as render_image". 解决方案简单:放置功能 render_image 在 model.Admin 不是在您的嵌入式表格中,其次,这些是字段和设置 readonly_fields 在你的嵌入式表格中......所以,这是我最终收到的:


class OfferPropertyInline/admin.TabularInline/:
model = OfferProperty
fields=/'property_value',/
readonly_fields = /'property_value',/

class OfferAdmin/admin.ModelAdmin/:
inlines = [
OfferPropertyInline
]

def property_value/self,obj/:
return obj.get_value//

admin.site.register/Offer, OfferAdmin/

快网

赞同来自:

答案不适合我,我使用 Django 1.11.7. 我找到了这种方式来绕过它。

假设我有 2 表:

竞选和文章

, 在一个广告系列中有许多文章。 我想在观看特定的广告系列时展示文章。

桌子 Article 有一个名为的列

score

哪个正在浮动。 我想绕过它 2 在查看时分号后 Django admin.

在此示例中,它显示了如何为其创建自定义列

TabularInline

在 Django admin.


class Article/models.Model/:
title = models.TextField/null=False/
url = models.TextField//
score = models.FloatField/null=True/

def __str__/self/:
return self.title

def display_score/self/:
if self.score:
return round/self.score, 2/
return self.score

display_score.short_description = 'Score'

class ArticleInline/admin.TabularInline/:
model = Article
readonly_fields = /'title', 'url', 'display_score'/
fields = /'title', 'url', 'display_score'/

class CampaignAdmin/admin.ModelAdmin/:
inlines = [ArticleInline]

admin.site.register/Campaign, CampaignAdmin/

喜特乐

赞同来自:

@lechup 这是对的,除了你需要:


readonly_fields = /'mycustomfield',/


决心 Inline 对于以后的版本 django /+1.4/

要回复问题请先登录注册