Django / python:API相关数据的模型关系

时间:2014-04-24 22:18:30

标签: python django django-models

我正在构建一个API的包装器,因此我希望保存API本身所拥有的信息(我希望任何更新的api信息也保存在我的服务器上)。在这种情况下,我需要构建预测我将接收的数据的模型。

所以我开始构建这些模型。让我们假设他们看起来像这样:

class ModelForAPI(models.model):
    #model fields here

现在,这些数据将在需要时稳定地收集和更新。让我们假设除了为保存api数据而构建的模型之外,我还有更多相关的数据,但这些数据仅与我的服务器相关。问题变成:如何最好地扩展"这个数据?

我觉得有一些可能的选择,要么像我这样扩展api模型:

class Model(models.Model):
    api_information = ForeignKey(ModelForAPI)

或者我像这样继承它:

class Model(ModelForAPI):
    #model fields here

由于我正在处理将随着新信息频繁更新的API信息,我不确定哪种方式会使我的模型架构更容易。任何指针都将非常感激。

1 个答案:

答案 0 :(得分:1)

实现此目标的最简单方法之一是在api-by-api的基础上存储api数据的序列化版本。

class ModelForAPI( models.model ):
  name = models.CharField( ... )
  data = models.CharField( max_len = SOMETHING_BIG )

def get_paypal_config():
  return json.loads( ModelForAPI.objects.get( name = 'PayPal' ).data )

def set_paypal_config( mydict )
  qs = ModelForAPI.objects.filter( name = 'PayPal' )
  qs.update( data = json.dumps( mydict ))
  return

通过这种方式,您可以在实际API数据中获得很大的灵活性,而无需修改架构。您还可以在同一模型中存储各种API设置。

(当然......通常建议将API变量存储在Heroku的环境变量中,但那是你的调用。)