Django模型参数中的条件

时间:2019-05-09 22:21:32

标签: django

快速问题。有谁知道如何在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。也许不能更改默认值,但是将启动另一个图像。

3 个答案:

答案 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"