我正在使用Django 1.9设计一个数据库网站,在我的模型中,我有一个特许经营权'桌子和物品'表
以下是我的模特:
from django.db import models
class franchise(models.Model):
"""Parent to all entires in item db"""
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
class item(models.Model):
"""Core database containing all entries in db"""
id = models.AutoField(primary_key=True)
franchise = models.ForeignKey(franchise, on_delete=None)
title = models.CharField(max_length=255)
description = models.TextField()
正如您所见,' item'拥有特许经营权的外键'
我的admin.py文件:
from django.contrib import admin
from db.models import *
# Displaying the franchise database
class FranchiseAdmin(admin.ModelAdmin):
list_display = ('name',)
admin.site.register(franchise, FranchiseAdmin)
# Displaying the core database
class ItemAdmin(admin.ModelAdmin):
# Get name of parent franchise
def get_franchise(self, obj):
return obj.franchise.name
# Columns to display
list_display = ('title', 'get_franchise', 'description')
admin.site.register(item, ItemAdmin)
该功能' get_franchise'是的,我可以显示' name'的值来自列表页面上的外键表。我希望在Django admin中的条目添加和更改页面中实现相同的功能。
如何在'添加'中显示外键值?并且'改变'页面,所以我可以看到' name'当我在项目表中添加和更改行时父母特许经营权?
答案 0 :(得分:1)
似乎您忘记将__str__
方法(或__unicode__
for python 2)添加到模型中。没有必要创建特殊方法来显示ForeignKey
s的值。
class franchise(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255)
def __str__(self): # __unicode__ for py2
return self.name
class ItemAdmin(admin.ModelAdmin):
list_display = ('title', 'franchise', 'description')