2017-08-31 1 views
0

Ich erstelle ein Human Ressource Projekt mit 3 Apps 'Hauptwebsite', 'CandidatePart', 'CompanyPart'.Django multiple Foreign Key in einem Modell

Ich brauche Vorschläge meine Modelle zu strukturieren, die nun die folgenden sind:

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

Ich habe zwei Foreign HR und Unternehmen den Zugriff auf

Also, wie kann ich andere Firmendetails basierend auf HR Auswahl ausblenden oder Andere HR-Details ausblenden, wenn ein Unternehmen ausgewählt ist.

+0

Bei einigen Datenbankabfragen sollten Sie in der Lage sein, das Gleiche zu tun, Beziehen Sie sich auf die gleiche in der Admin-Konsole kommt? –

+0

Hallo Bipul, Thx für die Beantwortung;) Ich bin mir nicht sicher, was du meinst "Bezug auf das gleiche" Ich bezog sich auf die Django Admin Panel – Ben2pop

+0

Wie in Sie gefragt, HR-Menü mit gefilterten Set gefüllt werden, sobald das Unternehmen ausgewählt ist in der Admin-Konsole. –

Antwort

0

Sie können in der Admin-Konsole filtern, indem Sie Code in admin.py des jeweiligen Moduls/der App hinzufügen. Zum Beispiel, wenn mein Projekt Name ist xyz, und ich habe eine App namens a, b und c, und ich möchte einige Filterung für b dann in b/admin.py tun, so etwas zu tun:

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) 

ich diese Hoffnung ist was du suchst.

Weitere Einzelheiten finden Sie in offiziellen documentaion here