Skip to main content
 首页 » 编程设计

python之Django 1.5 : Display foreignkey values in both admin models

2024年11月01日28Leo_wl

我不确定我的标题是否真的有意义。基本上(从下面的代码),当我访问管理屏幕时,我希望一个项目与其客户端一起显示,而一个客户端显示所有附加的项目。有什么办法吗?

class Client(models.Model): 
    title = models.CharField(max_length=250, null=True) 
 
    #project = models.ManyToManyField(Project) 
    #status = models.CharField(max_length=250) 
 
class Project(models.Model): 
    project_choices = ( 
        ('L1', 'Lead'), 
        ('C1', 'Confirmed'), 
        ('P1', 'In Progress'), 
        ('P1', 'Paid'), 
 
    ) 
    title = models.CharField(verbose_name='Project Title', max_length=250, null=True) 
    client = models.ForeignKey(Client) 
    project_status = models.CharField(max_length=2, 
                                      choices=project_choices, 
                                      default='P1') 
    def __unicode__(self): 
        return self.title 

请您参考如下方法:

我建议设置自定义 ModelAdmin并使用 list_display 指示您要在管理员中显示哪些字段。它是相当可定制的,您可以添加可以准确显示您指定的信息的可调用文件。下面是客户端模型的示例 ModelAdmin。

# project/app/admin.py 
# Callable to add to ModelAdmin List Display 
def show_client_projects(obj): 
    project_list = [p.title for p in obj.project_set.all()] 
    return ', '.join(project_list) 
show_client_projects.short_description = 'Client Projects' 
 
# Custom ModelAdmin 
class ClientAdmin(admin.ModelAdmin): 
    list_display = ('title', 'show_client_projects')