2017-08-31 72 views
0

我正在用3个应用程序'主网站','CandidatePart','CompanyPart'创建一个Human Ressources项目。在一个模型中的Django多个外键

我需要建议,构建我的模型,其现在是以下几点:

CompanyPart:

class Company(models.Model): 
     company_name = models.CharField(max_length = 250) 

     def __str__(self): 
      return self.company_name 

class Team(models.Model): 
     company = models.ForeignKey(Company, on_delete=models.CASCADE) 
     team_name = models.CharField(max_length = 500) 

     def __str__(self): 
      return self.team_name 

class TeamMember(models.Model): 
     team = models.ManyToManyField(Team) 
     first_name = models.CharField(max_length=150) 
     last_name = models.CharField(max_length=150) 
     position = models.CharField(max_length=150,default='') 

     def __str__(self): 
      return self.first_name + ' ' + self.last_name + ' as ' + self.position 

class HR_member(models.Model): 
     company = models.ForeignKey(Company, on_delete=models.CASCADE) 
     first_name = models.CharField(max_length=150) 
     last_name = models.CharField(max_length=150) 

     def __str__(self): 
     return self.first_name + ' ' + self.last_name 

CandidatePart:

class Candidate(models.Model): 
    HR = models.ForeignKey('CompanyPart.HR_member') 
    company = models.ForeignKey('CompanyPart.company', default = '') 
    first_name = models.CharField(max_length=150) 
    last_name = models.CharField(max_length=150) 
    email = models.EmailField() 

我有两个foreignkeys访问HR和公司

那么,如何根据人力资源选择隐藏其他公司详细信息或者如果选择任何公司,隐藏其他人力资源细节。

+0

对于某些数据库查询,你应该能够做同样的,你指的是同在管理控制台来吗? –

+0

嗨Bipul,Thx回答;)我不确定你的意思是指'相同的'我指的是Django管理面板 – Ben2pop

+0

正如你所要求的人力资源菜单一旦选择公司后要求人力资源菜单填充过滤集在管理控制台中。 –

回答

0

您可以通过在相应模块/应用程序的admin.py中添加代码来在管理控制台执行过滤。例如,如果我的项目的名称为某某和我有命名为A,B和C的应用程序,我想这样做对于b一些过滤,然后在B/admin.py做这样的事情:

class xxxAdmin(admin.ModelAdmin): 
//list_display = ['user', 'business_name'] => this line displays needed columns only, optional. 

def formfield_for_foreignkey(self, db_field, request, **kwargs): 
    if db_field.name == "user": 
     kwargs["queryset"] = User.objects.filter(is_staff=True) 

    return super(xxxAdmin, self).formfield_for_foreignkey(db_field, request,**kwargs) 

我希望这是你在找什么。

欲了解更多详细信息,请参阅官方文件建立here

相关问题