Pregunta rápida. ¿Alguien tiene alguna idea de cómo escribir condicionales en modelos django?
Por ejemplo, tengo este código aquí:
class Trip(models.Model):
tripName = models.CharField(max_length=64)
tripLogo = models.ImageField(default='default_trip.jpg', upload_to='trip_pics')
Entonces, aquí el valor predeterminado es 'default_trip.jpg'
, pero me gustaría escribir un condicional que if tripName == "russian"
que default=russia.jpg
. Tal vez no cambie el valor predeterminado, pero se iniciará otra imagen.
3 respuestas
Entonces, esta parte del código me ayudó a resolver mi problema.
def save(self, *args, **kwargs):
tripName = getattr(self, 'tripName')
if tripName in tripImages:
self.tripLogo = "{}.png".format(tripName.lower())
else:
self.tripLogo = "default_trip.png"
Esto no es algo que se pueda hacer en el nivel del modelo, debe hacerse en el controlador (de lo contrario, esto rompería el patrón MVC).
Tenga en cuenta que el contenedor ORM de Django debe convertir su clase de modelo en una tabla utilizable en cualquier motor de base de datos subyacente. Este tipo de "defecto condicional" no es parte de ningún motor de base de datos que yo sepa.
El argumento predeterminado puede ser un calable.
def contact_default():
return {"email": "to1@example.com"}
contact_info = JSONField("ContactInfo", default=contact_default)
Lea esto
Preguntas relacionadas
Nuevas preguntas
django
Django es un marco de aplicación web del lado del servidor de código abierto escrito en Python. Está diseñado para reducir el esfuerzo requerido para crear sitios web y aplicaciones web complejos basados en datos, con un enfoque especial en menos código, sin redundancia y siendo más explícito que implícito.