Ссылка на фид API Django на 'URL' вместо имени
В настоящее время я передаю API на мою веб-страницу django, и значение ключа speciality
внутри первого API содержит URL к моему второму API
Моя цель состоит в том, чтобы вместо получения ссылок из первого API показать раздел названия, который включен во второй API.
html
<div class="container-fluid p-2 bg-primary text-white text-center">
<h1>Users</h1>
<a style="background: black;" href="http://localhost:8000/api/">Check out our API here</a>
</div>
<div class="container mt-5">
<table class="table">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Lastname</th>
<th>Email</th>
<th>Hiring Date</th>
<th>Phone</th>
<th>Job</th>
<th>Speciality</th>
<th>Salary</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr>
<td>{{ user.id }}</td>
<td>{{ user.name }}</td>
<td>{{ user.last_name }}</td>
<td>{{ user.email }}</td>
<td>{{ user.hire_date }}</td>
<td>{{ user.phone_number }}</td>
<td>{{ user.job }}</td>
<td>{{ user.speciality }}</td>
<td>{{ user.salary }}</td>
</tr>
{% endfor %}
views.py
def home(request):
response = requests.get('http://127.0.0.1:8000/api/workers/')
worker = response.json()
return render(request, "home.html", {'users': worker})
models.py
from django.db import models
class Speciality(models.Model):
paradigm = models.CharField(max_length=50)
def __str__(self):
return self.paradigm
class Worker(models.Model):
name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
email = models.CharField(max_length=100)
phone_number = models.IntegerField(default=0)
hire_date = models.DateField(auto_now=True)
job = models.CharField(max_length=100)
speciality = models.ManyToManyField(Speciality, blank=True)
salary = models.IntegerField(default=0)
commission_pct = models.IntegerField(default=0, blank=True, null=True)
manager_id = models.IntegerField(default=0, blank=True, null=True)
department_id = models.IntegerField(default=0, blank=True, null=True)
def __str__(self):
return self.name
Итак, чтобы еще раз уточнить, оба API существуют в проекте django в разных разделах URL
То, что показано под картинкой - это "работники", то, что я хочу получить - это ключевое значение paradigm
под "специальностью"
Обратите внимание, что каждый пользователь может иметь несколько "парадигм", связанных с ним.
Что я пробовал до сих пор, так это редактировать эту строку в html
{% for user in speciality %} <td>{{ user.paradigm }}</td> {% endfor %}
и вместо этого получил следующие результаты
Это не то, чего я хотел, потому что теперь каждый пользователь имеет все парадигмы, а не те, которые ему назначены.
speciality
в user/worker будет списком объектов Speciality. В HTML вам нужно будет перебрать все специальности, чтобы получить парадигму. Что-то вроде:
<td>
{% for spec in user.speciality %}
<span>{{ spec.paradigm }},</span>
{% endfor %}
</td>
Дополнительно, при получении рабочих из API, вы можете преобразовать представление специальностей для каждого пользователя, чтобы избежать вложенных циклов в HTML. Но это зависит от того, как ваш API рабочих был написан на данный момент.