2013-03-08 66 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