2017-08-31 75 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

相關問題