Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django模型参数中的条件句_Django - Fatal编程技术网

django模型参数中的条件句

django模型参数中的条件句,django,Django,快速提问。有人知道如何在django模型中编写条件语句吗 例如,我这里有以下代码: class Trip(models.Model): tripName = models.CharField(max_length=64) tripLogo = models.ImageField(default='default_trip.jpg', upload_to='trip_pics') 所以这里的默认值是'default\u trip.jpg',但是我想写一个条件,如果tripNam

快速提问。有人知道如何在django模型中编写条件语句吗

例如,我这里有以下代码:

class Trip(models.Model):

    tripName = models.CharField(max_length=64)
    tripLogo = models.ImageField(default='default_trip.jpg', upload_to='trip_pics')

所以这里的默认值是
'default\u trip.jpg'
,但是我想写一个条件,如果tripName==“俄语”比
default=rusia.jpg
好。可能不会更改默认值,但会启动另一个映像。

这不是在模型级别可以完成的事情,必须在控制器中完成(否则,这将破坏MVC模式)


请记住,无论底层数据库引擎是什么,Django的ORM包装器都必须将模型类转换为可用表。据我所知,这种类型的“条件默认值”不是任何数据库引擎的一部分。

default arg可以是calable

def contact_default():
    return {"email": "to1@example.com"}

contact_info = JSONField("ContactInfo", default=contact_default)

阅读

,这部分代码帮助我解决了问题

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"

我害怕这一点,所以我似乎不得不将这项任务转移到我项目的另一个层次。感谢您的回复:)