Python:如何在我的Django模板中传递外键的值?

您所在的位置:网站首页 eclipse如何创建spring项目 Python:如何在我的Django模板中传递外键的值?

Python:如何在我的Django模板中传递外键的值?

2023-03-14 14:03| 来源: 网络整理| 查看: 265

1> Tiny Instanc..:

如果我理解正确,目标是能够在帖子上列出相关的投标人/出价?如果是这样,那么你可以使用select_related(如果你选择从独生子女父母)的prefetch_related(如果你正在做一个反向查找)

1)首先,在您的投标模型中,更好的related_name是"出价",就像这样;

post = models.ForeignKey(Post, default=1, related_name='bids' )

2)其次在内部def live_bid_truck(request):进行这样的post查询,这样你就可以在一个数据库中获取所有相关对象.

Post.objects.all().prefetch_related('bids')

3)然后在您的模板中,您可以使用可以访问帖子的相关出价

{% for bid in post.bids.all %} // In your case post is obj {{ bid }} // Access whatever you need from the bid like {{ bid.user }} {% endfor %}

post.bids.all即使没有预取也只需遵循向后关系即可调用和接收值.如果您没有获得任何值,那么您可能没有正确设置它们.prefetch_related随着帖子数量的增加,有助于提高表现.

来自您的代码

在你BidForm的没有参考post,我不知道你是否在自定义save()方法中有它.保存此表单时,post_id将是默认值1

# NO REFENCE TO post class BidForm(forms.ModelForm): class Meta: model = Bid fields = ["amount"]

同样在你的view你也不设置帖子.

def live_bid_truck(request): form = BidForm(request.POST or None) if form.is_valid(): bid = form.save(commit=False) print(form.cleaned_data.get("amount")) bid.user = request.user # YOU SET THE USER bid.post = ?? # YOU DON'T SET THE POST HERE EITHER, # SO ALL YOUR BIDS HAVE THE DEFAULT POST id = 1 # DO YOU ACTUALLY HAVE POST with id = 1? bid.save() # WHAT HAPPENS IF YOU PRINT BID POST ID HERE ?? # CHECK HERE IF YOU REALLY HAVE THE RELATED POST ID. print(bid.post.id)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3