Я создаю 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()})
Теперь это работает прекрасно, эти объекты очень пригодны для использования, но есть только «большая» проблема: мы не можем использовать или ссылаться на внешние ключи с этой моделью . Моя идея состояла в том, чтобы извлечь все необходимые атрибуты (даже внешние ключи, которые нужно будет преобразовать в другой объект), но это заставило меня задуматься обо всем ненужном использовании памяти, которое потребовалось бы, поскольку разные объекты могли принимать один и тот же внешний ключ. и на практике это были бы два разных объекта .
Можно ли как-нибудь это сделать?
Спасибо!