Django query only employees belonging to that company

167 Views Asked by At

I have 2 modules a module representing a company:

class ExternalService(models.Model):

    # Fields
    company_name = models.CharField(max_length=60)
    address_street = models.CharField(max_length=60)
    address_postcode = models.CharField(max_length=30)
    address_city = models.CharField(max_length=30)
    company_telephone = models.CharField(max_length=30)
    company_email = models.CharField(max_length=60)
    company_support_telephone = models.CharField(max_length=30)
    company_support_email = models.CharField(max_length=30)
    company_website = models.URLField(null=True, blank=True)
    notes = models.TextField(max_length=448)
    created = models.DateTimeField(auto_now_add=True, editable=False)
    last_updated = models.DateTimeField(auto_now=True, editable=False)

    class Meta:
        pass

    def __str__(self):
        return str(self.company_name)

    def get_absolute_url(self):
        return reverse("asset_app_ExternalService_detail", args=(self.pk,))

    def get_update_url(self):
        return reverse("asset_app_ExternalService_update", args=(self.pk,))

and a module representing employees:

class ExternalServiceContact(models.Model):

    # Relationships
    company = models.ForeignKey("asset_app.ExternalService", on_delete=models.SET_NULL, blank=True, null=True)
    position = models.ForeignKey("asset_app.ExternalServicePosition", on_delete=models.SET_NULL, blank=True, null=True)

    # Fields
    name = models.CharField(max_length=60)
    email = models.CharField(max_length=30)
    cellphone = models.CharField(max_length=30)
    created = models.DateTimeField(auto_now_add=True, editable=False)
    last_updated = models.DateTimeField(auto_now=True, editable=False)



    class Meta:
        pass

    def __str__(self):
        return str(self.name)

    def get_absolute_url(self):
        return reverse("asset_app_ExternalServiceContact_detail", args=(self.pk,))

    def get_update_url(self):
        return reverse("asset_app_ExternalServiceContact_update", args=(self.pk,))

In my views.py I want to get all the employees belonging to that company. So when I look at my DetailView I only get listed employees beloning to that company.

class ExternalServiceDetailView(generic.DetailView):
    model = models.ExternalService
    form_class = forms.ExternalServiceForm

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['employees'] = models.ExternalServiceContact.get(#######).order_by('name')
        return context

just dont know what to insert into my get()

1

There are 1 best solutions below

0
willeM_ Van Onsem On BEST ANSWER

You can query with:

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['employees'] = self.object.externalservicecontact_set.order_by('name')
    return context