def get_permission_choices():

    global PERMISSIONS_LIST

    if PERMISSIONS_LIST:
        return PERMISSIONS_LIST

    from django.conf import settings

    AUTO_PERMISSIONS = getattr(settings, "AUTOGENERATED_PERMISSIONS", ('add', 'change', 'delete'))

    result = getattr(settings, "MANUAL_PERMISSIONS", [])

    for model in apps.get_models():
        for action in AUTO_PERMISSIONS:
            opts = model._meta
            result.append((
                '%s.%s' % (opts.app_label, get_permission_codename(action, opts)),
                'Can %s %s' % (action, opts.verbose_name_raw)
            ))

    PERMISSIONS_LIST = sorted(result)
    return PERMISSIONS_LIST
Rather than creating permissions in the datastore which is incredibly slow (and relational)
dataset/ETHPy150Open potatolondon/djangae/djangae/contrib/gauth/datastore/permissions.py/get_permission_choices