Элегантный способ вернуть поле json, если поле равно нулю в Python - PullRequest
0 голосов
/ 19 января 2019

У меня тупой вопрос о REST API моей фляги.Если у меня есть пользовательская модель с большим количеством информации, и я хочу вернуть ее как json.Но некоторая информация все еще не имеет никакого значения (NULL).Какой элегантный способ вернуть его как пустую строку или другое значение по умолчанию вместо того, чтобы возвращать его как ноль.

Примерно так:

{ 
  'username': 'foo',
  'fullname' : ''
}

вместо этого:

{ 
  'username': 'foo',
  'fullname' : null
}

Это моя функция:

def json(self):
        return {
            'username': self.phone,
            'fullname': self.fullname
        }

Это модель пользователя:

class UserModel(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80))
    password = db.Column(db.String(80))
    fullname = db.Column(db.String(80)) 

Ответы [ 3 ]

0 голосов
/ 19 января 2019

sqlalchemy.schema.Column класс позволяет указать default= параметр:

class UserModel(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80))
    password = db.Column(db.String(80))
    fullname = db.Column(db.String(80), default="") 

https://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Column.params.default

0 голосов
/ 19 января 2019

Обычно, если вы хотите переопределить значение None в Python, вы можете использовать оператор or, например, такой:

def json(self):
    return {
        'username': self.phone,
        'fullname': self.fullname or 'some default value'
    }

В случае, если self.fullname имеет значение, оно будет возвращено.Но если это None, то появляется 'some default value'.

Надеюсь, это поможет.

0 голосов
/ 19 января 2019

Один из способов заключается в том, чтобы в вашем возврате указывались условия:

def json(self):
        return {
            'username': self.phone if self.phone else '',
            'fullname': self.fullname if self.fullname else ''
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...