如何使用django中除数据库之外的其他数据源填充的字段定义模型?

时间:2012-11-12 15:25:58

标签: python django django-models django-forms

是否有人可以告诉我是否可以创建一个Model类,其中一些模型字段和一些其他字段从外部数据源获取数据。关键是我希望这个模型可以像ModelForm那样以另一个模型的方式被利用。我的意思是如果我通过指定获取特殊字段(那些可能没有链接到数据库中的数据的数据)的数据的操作来重新定义模型的“对象”管理器,那么modelForm会将输入与未附加到数据库的字段相关联数据库?关于相关对象的类似问题。如果我有一个与该特殊模型有关系的模型,我是否可以通过经典方式获取此模型实例以获取相关对象(包括经典模型字段和非数据库字段)?

请告诉我,如果我不清楚,我会重新制定。

感谢。

编辑:我尝试使用自定义字段创建一个模型,然后覆盖默认的管理器及其功能:all,get,...以获得与经典模型和管理器相似的对象,它可以工作。但是,我不使用QuerySet,似乎获得ModelForm,相关对象和管理功能的唯一方法是使用它来正确构建QuerySet并让它由管理器返回。这就是为什么现在我想知道是否可以正确地手动构建一个QuerySet,其中包含从外部源获取的数据,或者告诉django-admin,模型表单和相关对象来处理另一个类而不是此模型上的查询集。

由于

2 个答案:

答案 0 :(得分:1)

方法是define custom methods

  

在模型上定义自定义方法以添加自定义“行级”   对象的功能。而管理方法的目的是   做“表范围”的事情,模型方法应该作用于特定的模型   实例

     

这是将业务逻辑保存在一个地方的有价值的技术    - 模特。

答案 1 :(得分:0)

我现在有一个部分解决方案。我重写了Manager,特别是它的all()和get()函数(因为我现在只需要那些函数)。 all()返回一个查询集,在其中我添加了一些逻辑的结果,这些逻辑使我可以从外部数据构建对象(在我的情况下通过xmlrpc获取)。我通过_result_cache属性将这些对象添加到qs中。 我认为它不干净,事实上我的模型现在是一个自定义模型,我没有任何数据库字段。我可以用它来填充数据库模型......但是我可以像经典模型一样使用它:例如MyModel.objects.all()。

如果有人有另一个想法,我真的很感激。

此致