Это выглядит довольно плохо.
Во-первых, связать получение информации о состоянии с сохранением объекта - довольно плохая идея.Если «обновление» - единственное действие, которое вы когда-либо выполняете на этой модели, то, возможно, лучше было бы написать метод «update ()», который автоматически сохраняет значение после обновления состояния, а не делать это другим способом.вокруг.
def update(self):
self.status = get_store_information(self.store.code)
self.save()
Второе: как вы создаете первый экземпляр этой модели?Вы получите ошибки дублирования, если будете пытаться сохранить новый экземпляр каждый раз, когда обновляется модель.Скажем, если вы делаете что-то вроде этого:
# this will crap out
update = Update(mystore)
update.save()
То, что вы должны делать, это что-то вроде:
# this will work (provided we have 'update')
mystore.status.update()
Или:
# always retrieve the stored instance before saving
status, created = StoreStatus.objects.get_or_create(store=mystore)
status.update()
В случае, если выдостаточно ленивы, вы всегда можете добавить метод "update_status" к вашей модели Store и выполнить создание / обновление там.Всегда лучше четко указывать, что вы делаете.Помните: Django основан на принципе наименьшего удивления, как и ваш код!:)