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