Генерация Django объектов модели через API - PullRequest
0 голосов
/ 10 апреля 2020

Я создаю Django приложение, в котором я определил все необходимые модели, необходимые для проекта, но вместо того, чтобы напрямую подключить к нему базу данных (с ORM), я хочу использовать API. Прямо сейчас я могу получить объекты по идентификатору, сделав запрос следующим образом:

def getStudentById(id):
     response = requests.get("http://localhost:8080/students/" + str(id))
     if response.status_code != 200:
         raise DatabaseError("Error: getStudentById did not returned 200.")
     json_data = json_clean(json.loads(response.content))
     return Student.load(json_data)

Метод «json_clean» прямо сейчас удаляет «_links», предоставляемую нашим API, который следует за Формат HATEOAS .

Метод «загрузки» от Student считывает все атрибуты, предоставляемые JSON, которые он получает, например:

@classmethod
def load(cls, json):
    j2m = dict(id='id', firstName='firstName', lastName='lastName', fullName='fullName', degree='degree', number='studentNumber', email='email', countryNic='countryNic', photo='photo')
    return cls(**{j2m[k]: v for k, v in json.items()}) 

Теперь это работает прекрасно, эти объекты очень пригодны для использования, но есть только «большая» проблема: мы не можем использовать или ссылаться на внешние ключи с этой моделью . Моя идея состояла в том, чтобы извлечь все необходимые атрибуты (даже внешние ключи, которые нужно будет преобразовать в другой объект), но это заставило меня задуматься обо всем ненужном использовании памяти, которое потребовалось бы, поскольку разные объекты могли принимать один и тот же внешний ключ. и на практике это были бы два разных объекта .

Можно ли как-нибудь это сделать?

Спасибо!

...