2013-03-08 105 views
3

我已在效法我models.pyDjango的外鍵

from django.db import models 

class LabName(models.Model): 
    labsname=models.CharField(max_length=30) 
    def __unicode__(self): 
    return self.labsname 

class ComponentDescription(models.Model): 
     lab_Title=models.ForeignKey('Labname') 
     component_Name = models.CharField(max_length=30) 
     description = models.CharField(max_length=20) 
     purchased_Date = models.DateField() 
     status = models.CharField(max_length=30) 
     to_Do = models.CharField(max_length=30,blank=True) 
     remarks = models.CharField(max_length=30) 

     def __unicode__(self): 
      return self.component 

我已在效法我admin.py

from django.contrib import admin 
from Lab_inventory.models import ComponentDescription,LabName 

class ComponentDescriptionAdmin(admin.ModelAdmin): 
    list_display= ('lab_Title','component_Name','description','purchased_Date','status','to_Do','remarks')   
    list_filter=('lab_Title','status','purchased_Date') 

admin.site.register(LabName) 
admin.site.register(ComponentDescription,ComponentDescriptionAdmin) 

我要的是組件描述下顯示的字段是顯示在實驗室標題下(與每個實驗室標題相關的字段應顯示在該實驗室名稱下)

回答

1

您在做什麼與list_displaylist_filter屬於列出LabName對象列表的管理員屏幕中顯示的列表。

假設一個LabName有一個一對多ComponentDescription的實體,您需要Django的InlineModelAdmin顯示ComponentDescription對象屬於管理頁面內LabName特定LabName實體名單。該代碼將是如下結構的:

from django.contrib import admin 
from Lab_inventory.models import ComponentDescription,LabName 

class ComponentDescriptionInline(admin.TabularInline): 
    model = ComponentDescription 

class LabNameAdmin(admin.ModelAdmin): 
    inlines = [ 
     ComponentDescriptionInline, 
    ] 

admin.site.register(LabName, LabNameAdmin) 

其中TabularInline是通用InlineModelAdmin的子類。

+1

謝謝josvic zammit – user2148571 2013-03-08 14:25:24