我正在研究一個使用模型的 Django 專案。如果有更好的解決方案,我想以某種方式始終訪問該串列的最高出價(作為listing.highest_bid)或其他方式。我在下面的代碼片段中嘗試的 high_bid 似乎不起作用,它給了我一個 AttributeError (AttributeError: 'str' object has no attribute 'bids')。如何訪問模型自己的引數值并根據我的喜好過濾它們?
class Listing(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="listings")
title = models.CharField(max_length=100)
description = models.CharField(max_length=1000)
starting_bid = models.PositiveIntegerField()
picture = models.TextField(max_length=200, default='static/auctions/notfound.png')
category = models.ForeignKey(Category, on_delete=models.CASCADE,related_name="listings")
is_active = models.BooleanField()
highest_bid = self.bids.aggregate(Max('price'))
def __str__(self):
return f"{self.title}"
class Bid(models.Model):
listing = models.ForeignKey(Listing, on_delete=models.CASCADE, related_name="bids")
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="bids")
price = models.PositiveIntegerField()
# time TODO
def __str__(self) -> str:
return f"Bid #{self.id}"
uj5u.com熱心網友回復:
您可以簡單地使用@property回傳諸如計算欄位
class Listing(models.Model):
# Some fields
@property
def highest_bid(self):
# Access the Listing bids by reverse foreign key and retrieve the first with highest price
return self.bids.order_by('-price').first()
注意:每次執行listing.highest_bid函式都會執行回傳結果(動態)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/361119.html
