2011-02-16 87 views
2

我正在寻找一种基于外部数据馈送创建带有一个下拉列表的简单ModelForm的方法。我想要这个的原因是能够通过django admin从外部源导入数据。为非数据库数据创建django查询集

一个例子可能是一个模型class BlogPost(models.Model)与许多领域。在django admin的“创建新对象”中,它应该只是一个字段;来自外部博客的帖子列表。当用户在下拉列表中选择帖子并保存该对象时,BlogPost的保存方法将从Feed中提取所有相关数据,并在BlogPost实例中设置相应的字段并将其保存到数据库中。

我被困在“获取外部数据并将其呈现在django管理员中”部分。从我所说的最好的方式来做到这一点,仍然能够使用django的标准组件将外部饲料包装在一个“非数据库,自定义查询集”,并将其传递给forms.ModelChoiceField?有没有简单的方法来解决这个问题?

(我不是真正创建一个博客张贴偷窃者。我有一个视频存档后端是由我创建的网站完全独立的,我需要一个用户友好的方式从中导入数据)

回答

2

ModelChoiceField专门用于查询集。如果你想使用非查询集,为什么不使用ChoiceField这是任何对象的列表? http://docs.djangoproject.com/en/dev/ref/forms/fields/#choicefield

或者我在这里错过了什么?

mychoices = forms.ChoiceField(choices=[('external_post', 'External Post'), ('external_post2', 'External Post 2')]) 

您可以自由填写您希望的任何来源的列表!

+0

我想我可以使用ChoiceField而不是ModelChoiceField,只要在每次渲染表单时对值进行求值。如果我说ChoiseField(选择= foo()),那么foo将仅被评估一次,而我无法为选择传递函数引用ChoiseField(choice = foo)。 – Vegard 2011-02-16 19:09:26