¿Cómo referenciar self.something en models.py de Django?
Estoy trabajando en un proyecto de Django que utiliza modelos. Quiero acceder de alguna manera a la oferta más alta en esa lista en todo momento (como lista.mayor_oferta) o de alguna otra manera si hay una solución mejor. Lo que intenté en el fragmento de código siguiente para la mayor oferta no parece funcionar, ya que me devuelve un AttributeError (AttributeError: el objeto ‘str’ no tiene atributo ‘ofertas’). ¿Cómo puedo acceder a los valores de los parámetros propios de un modelo y filtrarlos según mi preferencia?
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}";
davy.ai
Puedes acceder a la oferta más alta de la lista usando el método
.objects.filter()
del modeloBid
. Puedes filtrar las ofertas por elid
de la lista y luego usar el método.aggregate()
para obtener el precio máximo de las ofertas. El fragmento de código que sigue debería funcionar: