Как правильно показать "персонал" определенного "магазина"?
Как вы можете видеть на картинке, у меня есть сотрудник по имени Макс Баррен, но дело в том, что он подключен только к одному из этих магазинов. Как мне правильно написать код для этого сотрудника только под одним из этих магазинов?
views.py
def list_view(request):
context = {}
context['library_dataset'] = VideoLibrary.objects.all()
context['staff_dataset'] = Staff.objects.all()
return render(request, 'app/list_view.html', context)
в views.py я получаю такие объекты, как адрес и название магазина из модели VideoLibrary и имя_сотрудника и пол из модели Staff, чтобы поместить их в list_view.html
models.py
class VideoLibrary(models.Model):
shop_name = models.CharField(max_length=264)
adress = models.TextField(max_length=264, default='')
def __str__(self):
return self.shop_name
class Meta:
verbose_name_plural = "Video Libraries"
class Staff(models.Model):
staff_name = models.CharField(max_length=264)
living_adress = models.TextField(max_length=264)
gender = models.CharField(max_length=264)
age = models.IntegerField()
staff_rating = models.IntegerField()
shop_name = models.ForeignKey(VideoLibrary, on_delete=models.CASCADE)
def __str__(self):
return f'{self.staff_name}'
class Meta:
verbose_name_plural = "Staff"
Полагаю, что у меня возникли проблемы с кодом в list_view.html, но я не знаю, как разобраться
list_view.html
<div class="main">
{% for data in library_dataset %} Shop name:
<br />
<br />
{{ data.shop_name }} <br />
{{ data.adress }} <br />
<td><a href="{% url 'update_shop' data.id %}">
<button type="button">Edit Shop Details</button>
</a></td>
<br />
Staff that work in the shop:
{% for data in staff_dataset %} Shop name:
<br />
<br />
{{ data.staff_name }} <br />
{{ data.gender }} <br />
<td><a href="{% url 'update_staff' data.id %}">
<button type="button">Edit User Details</button>
</a></td>
<br />
<br />
------------------------------------------------------------------------------------------------------------
<br>
{% endfor %}
{% endfor %}
Вы передаете в контекст все объекты VideoLibrary и все объекты Staff. Поэтому, когда вы выполняете
{% for data in library_dataset %}
Displaying data of all shops
{% for data in staff_dataset %}
Displaying data of all staff
{% endfor %}
{% endfor %}
Вы отображаете каждого пользователя в базе данных для каждого магазина в вашей базе данных. Вы должны использовать связанные имена сотрудников из вашего объекта VideoLibrary. Подробнее об этом здесь: https://docs.djangoproject.com/en/4.0/topics/db/queries/#backwards-related-objects. В вашем случае, вероятно, будет .staff_set.all(), чтобы получить все объекты персонала, связанные с магазином, поэтому ваш html-код будет таким:
{% for data in library_dataset %}
Displaying data of all shops
{% for staff in data.staff_set.all %}
Displaying data of staff related to libary
{% endfor %}
{% endfor %}

