

@classmethod
def get_or_create(cls, **kwargs):
    defaults = kwargs.pop('defaults', {
        
    })
    query = cls.select()
    for (field, value) in kwargs.items():
        if ('__' in field):
            query = query.filter(**{
                field: value,
            })
        else:
            query = query.where((getattr(cls, field) == value))
    try:
        return (query.get(), False)
    except cls.DoesNotExist:
        try:
            params = dict(((k, v) for (k, v) in kwargs.items() if ('__' not in k)))
            params.update(defaults)
            with cls._meta.database.atomic():
                return (cls.create(**params), True)
        except IntegrityError as exc:
            try:
                return (query.get(), False)
            except cls.DoesNotExist:
                raise exc

dataset/ETHPy150Open coleifer/peewee/peewee.py Model.get_or_create/original