Ich versuche, eine Liste der Mitarbeiter anzuzeigen, die Teil desselben Unternehmens sind. Also zum Beispiel mit der gegebenen URL localhost/app/company-slug/würde ich gerne eine Liste von Zeilen anzeigen, wo die Details aller drei Modelle sind:Wie füge ich zwei Resultset/Tabelle in Django zusammen?
| Vorname | letzter_name | Firmen-Slug | angestellter_status | mitarbeiter_type |
Mit diesen Modellen, wie kann ich diese Art von Daten abrufen?
class Employee(models.Model):
company = models.ForeignKey(Company)
class EmployeeProfile(models.Model):
employee = models.OneToOneField(Employee)
# Base
first_name = models.CharField(max_length=31)
middle_name = models.CharField(max_length=31, null=True, blank=True)
class EmployeeJob(models.Model):
employee = models.OneToOneField(Employee)
# Employment status
employment_status = models.ForeignKey(EmploymentStatus, null=True, blank=True)
employment_type = models.ForeignKey(EmploymentType, null=True, blank=True)
Edit 1:
Ich weiß nicht möglich war, innerhalb von Template-Tags verbinden Tabellen. Dies ist eine funktionierende Lösung von @Shang Wang
{% for employee in employees %}
<tr class="table-row clickable" data-href="{% url 'hrm:detail' company.slug employee.pk %}">
<td><strong>A</strong></td>
<td>{{ employee.employeeprofile.first_name }} {{ employee.employeeprofile.last_name }}</td>
<td>{{ employee.employeejob.employment_status }}</td>
<td>{{ employee.employeejob.employment_type }}</td>
<td>4</td>
</tr>
{% endfor %}
Cool, es funktioniert, ich wusste nicht, war möglich Join Tabellen in Vorlage Tags. Übrigens, es dauert fast 5,3 Sekunden, um zu antworten. Ist normal? – realnot
Es hängt davon ab, ob Sie eine große Datenmenge haben, ja, es ist normal. Aber Sie sollten die Seitenreaktionszeit nicht so lange machen. Entweder funktioniert die Paginierung oder, wenn Sie ineffizienten Code haben, der die Dinge herunterzieht, beheben Sie es. –
Tut mir leid, ich kompiliere webkit-gtk-2.4.11 und die Arbeitsbelastung des Laptops ist: Load avg: 5.73, 5.69, 5.70. Das Problem besteht darin, Daten aus der Datenbank abzurufen, da die CPU unter Last steht. Normalerweise dauert es 2 Sekunden, um die Seite neu zu laden. – realnot