gpt4 book ai didi

python - 如何从 child FK 中获取 parent ?

转载 作者:行者123 更新时间:2023-12-02 05:12:37 26 4
gpt4 key购买 nike

模型.py

class Product(models.Model)
name = models.CharField()

class User(models.Model)
name = models.CharField()

class List(models.Model)
user = models.ForeignKey(User)

class Item(models.Model)
name = models.CharField()
list = models.ForeignKey(List)
user = models.ForeignKey(User)
product = models.ForeignKey(Product)

View .py

class ListView(View)
def get(self, request, pk)
list = List.objects.get(id=pk)
return render(request, "list.html", {"list" : list})

列表.html

{% for item in list.item_set.all %}
{{ item.name }}
{{ item.user.name }} - ??
{{ item.product.name }} - ??
{% endfor %}

如何获取用户名和产品名?

我试过了:

  1. {% item.user_set.first.name %} - 不起作用

  2. {% for user in item.user_set.all %}{{ user.name }}{% endfor %} - 不起作用

  3. 模型方法:

    def get_user(self): 
    self.user_ser.get() #does not work

如何解决这个问题?

最佳答案

Item有一个ForeignKeyProduct对象,您可以通过 item.product 访问相关对象,因此您可以使用以下方式渲染它:

{{ item<b>.product.name</b> }}
{{ item<b>.user.name</b> }}

如果您使用标准User模块,它是{{ item.user.username }} 。这可能是空的,例如如果 name相关用户的值为空字符串 '' .

但是,为了更有效地检索元素,最好执行 .prefetch_related(..) [Django-doc]批量检索这些项目:

class ListView(View)
def get(self, request, pk)
list = List.objects<b>.prefetch_related('item_set', 'item_set__product', 'item_set__user')</b>.get(id=pk)
return render(request, "list.html", {'list' : list})

关于python - 如何从 child FK 中获取 parent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61170370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com