2017-08-31 22 views
0

私は3つのアプリ「メインウェブサイト」、「CandidatePart」、「CompanyPart」でHuman Ressourcesプロジェクトを作成しています。Django複数の外部キーを1つのモデルで

私は今、以下のとおりである私のモデルを構築するための提案を必要とする:

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() 

私はHR会社

にアクセスするには2つのForeignKeyを持っています

したがって、HR選択に基づいて他の会社の詳細を非表示にするにはどうすればよいですか会社が選択されている場合は、他のHRの詳細を非表示にします。

+0

を参照してください? –

+0

こんにちはBipulさん、返信のためのThx;)あなたが「同じものを指している」ということについて私は確信していません。私はDjangoの管理パネルを参照していました – Ben2pop

+0

会社が選択された後、HRメニューがフィルタリングされた管理コンソールで –

答えて

0

管理コンソールでフィルタリングを行うには、それぞれのモジュール/アプリのadmin.pyにコードを追加します。例えば、私のプロジェクトの名前はXYZであると私は、bとcという名前のアプリを持っていると私はB/admin.pyで、その後Bのためにいくつかのフィルタリングをしたい、このような何かを行う場合:

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) 

私はこれを願っていますあなたが探しているものです。詳細については

公式documentaionあなたが同じことを行うことができるはず、いくつかのデータベースクエリ、あなたは管理コンソールに来て同じを参照しているとhere

関連する問題