首页 > 解决方案 > 获取模型的 __str__ 中相关对象的列表

问题描述

我有两个具有一对多关系的模型;上市和投标。是否可以在 Listing 的 str 方法中检索并显示 Bid 对象的 bid_price 列表?

下面提供的代码使服务器崩溃,我不确定要搜索的正确关键字。

我了解listing.bid_set 在Shell 或视图中的工作原理,但我不确定如何让它在这里工作。

class Listing(models.Model):
    title = models.CharField(max_length=64)

    def __str__(self):
        bid_objects = Bid.objects.all().filter(listing__id=self.id)
        price_list = []
        for bid_object in bid_objects:
            price_list.append(bid_object.bid_price)
        return f"{self.title}, {price_list}"

class Bid(models.Model): 
    listing = models.ForeignKey(Listing, on_delete=models.CASCADE, related_name="listing_bids")
    bid_price = models.DecimalField(max_digits=6, decimal_places=2)

谢谢你的帮助。

标签: pythondjangodjango-models

解决方案


由于您指定related_name='listing_bids',这意味着您可以使用以下方式访问相关Bid的 s self.listing_bids

class Listing(models.Model):
    title = models.CharField(max_length=64)

    def __str__(self):
        bid_objects = self.listing_bids.values_list('bid_price', flat=True)
        return f'{self.title}, {bid_objects}'

推荐阅读