如何正确显示某些'shop'的'staff'?
How to show 'staff' of certain 'shop' correctly?
正如您在图片中看到的那样,我有一个名叫 Max Barren 的员工,但问题是他只与这些商店中的一家有联系。仅在这些商店之一下,如何为该员工正确编写代码?
views.py
def list_view(request):
context = {}
context['library_dataset'] = VideoLibrary.objects.all()
context['staff_dataset'] = Staff.objects.all()
context['rank_dataset'] = Rank.objects.all()
return render(request, 'app/list_view.html', context)
at views.py 我从 VideoLibrary 模型中获取地址和商店名称等对象,并从 Staff 模型中获取 staff_name 和性别等对象,并将其放入 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"
class Rank(models.Model):
# rank_id = models.AutoField(primary_key=True, unique=True)
staff_name = models.ForeignKey(Staff, on_delete=models.CASCADE)
rank_name = models.CharField(max_length=264)
def __str__(self):
return f'{self.rank_name}, {self.staff_name}'
class Meta:
verbose_name_plural = "Ranks"
我想我在 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 %}
正如您在图片中看到的那样,我有一个名叫 Max Barren 的员工,但问题是他只与这些商店中的一家有联系。仅在这些商店之一下,如何为该员工正确编写代码?
views.py
def list_view(request):
context = {}
context['library_dataset'] = VideoLibrary.objects.all()
context['staff_dataset'] = Staff.objects.all()
context['rank_dataset'] = Rank.objects.all()
return render(request, 'app/list_view.html', context)
at views.py 我从 VideoLibrary 模型中获取地址和商店名称等对象,并从 Staff 模型中获取 staff_name 和性别等对象,并将其放入 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"
class Rank(models.Model):
# rank_id = models.AutoField(primary_key=True, unique=True)
staff_name = models.ForeignKey(Staff, on_delete=models.CASCADE)
rank_name = models.CharField(max_length=264)
def __str__(self):
return f'{self.rank_name}, {self.staff_name}'
class Meta:
verbose_name_plural = "Ranks"
我想我在 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 %}