快速问题。有谁知道如何在Django模型中编写条件语句?
例如,我在这里有以下代码:
class Trip(models.Model):
tripName = models.CharField(max_length=64)
tripLogo = models.ImageField(default='default_trip.jpg', upload_to='trip_pics')
因此,这里的默认值为'default_trip.jpg'
,但我想写一个条件,即if tripName == "russian"
比default=russia.jpg
。也许不能更改默认值,但是将启动另一个图像。
答案 0 :(得分:1)
这不是可以在模型级别完成的操作,必须在控制器中完成(否则,这会破坏MVC模式)。
请记住,无论底层数据库引擎是什么,Django的ORM包装器都必须将您的模型类转换为可用表。这种类型的“条件默认”不是我所知道的任何数据库引擎的一部分。
答案 1 :(得分:0)
默认arg可以计算。
def contact_default():
return {"email": "to1@example.com"}
contact_info = JSONField("ContactInfo", default=contact_default)
阅读this
答案 2 :(得分:0)
这部分代码帮助我解决了问题。
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"