【发布时间】:2016-06-29 14:34:03
【问题描述】:
是否有机会在 django admin 中的“raw_id_fields”旁边添加链接以更改外键对象的页面? 我使用 raw_id_fields 来减少对 mysql 的查询次数。 当我不使用 raw_id_fields 时,我可以编辑或添加外键对象。
如何使用 raw_id_fields?
@AntoinePinsard,我尝试了第二种解决方案。 “Edit My FK”字段已创建,但除了连字符外什么都没有。
那是我的模型管理员。
class FlatAdmin(admin.ModelAdmin):
inlines = [NeedInline]
readonly_fields = ('flat_house_edit_link',)
raw_id_fields = ('flat_house',)
list_display = ('show_date','show_block','show_house','show_rooms','show_price','show_stage')
list_filter = ('flat_house__house_block','flat_rooms')
search_fields = ('flat_house__id',)
field = ['flat_house','flat_house_edit_link','flat_owner','flat_price','flat_rooms','flat_total_sq','flat_life_sq','flat_kitchen_sq','flat_floors']
def flat_house_edit_link(self, instance):
if instance:
fk_id = instance.user_id
else:
fk_id = None
if fk_id:
opts = instance._meta.get_field('flat_house').rel.model._meta
related_url = reverse(
'admin:{}_{}_change/?_to_field=id&_popup=1'.format(
opts.ha,
opts.house,
),
args=[fk_id],
)
return format_html(
'<a target=_blank href="{}">Go!</a>', related_url)
else:
return "No related object"
flat_house_edit_link.short_description = "Change house"
admin.site.register(Flat,FlatAdmin)
【问题讨论】:
标签: django django-admin