0
假設我有一個Pen的數據模型。筆可以由金屬或木材製成。 金屬筆可以是銀色或白色 木製筆可以是藍色或綠色。 所以不得有藍色的金屬筆。Django - 自定義管理頁面的添加視圖
有沒有辦法在添加按鈕中替換材質選擇以顯示材質名稱/顏色的組合? 我認爲這些字段集必須有一個技巧。
# model.py
from django.db import models
class Color(models.Model):
color = models.CharField(max_length=20, primary_key=True)
def __unicode__(self):
return self.color
class Material(models.Model):
type = models.CharField(max_length=20)
color = models.OneToOneField(Color)
def __unicode__(self):
return "%s_%s" % (str(self.color), self.type)
class Pen(models.Model):
id = models.AutoField(primary_key=True)
label = models.CharField(max_length=20)
material = models.ForeignKey(Material)
def __unicode__(self):
return "%s_%s" % (str(self.material), self.label)
# admin.py
from django.contrib import admin
from .models import Material, Color, Pen
class PenAdmin(admin.ModelAdmin):
list_display = ('label', 'material', 'get_color',)
fieldsets = (
(None, {
'fields': ('label', 'material')
}),
)
def get_color(self, obj):
return obj.material.color
get_color.short_description = 'Color'
admin.site.register(Pen, PenAdmin)
admin.site.register(Material)
admin.site.register(Color)