Условия в аргументах моделей Джанго - PullRequest
0 голосов
/ 10 мая 2019

быстрый вопрос.Кто-нибудь знает, как писать условные выражения в моделях 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 ]

1 голос
/ 10 мая 2019

Это не то, что может быть сделано на уровне модели, это должно быть сделано в контроллере (в противном случае это нарушило бы схему MVC).

Имейте в виду, что оболочка ORM в Django должна превратить ваш класс модели в пригодную для использования таблицу в любом базовом ядре базы данных. Этот тип «условного значения по умолчанию» не является частью какого-либо механизма базы данных, о котором я знаю.

0 голосов
/ 12 мая 2019

Итак, эта часть кода помогла мне решить мою проблему.

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"
0 голосов
/ 10 мая 2019

Аргумент по умолчанию может быть калибруемым.

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

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

read this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...