2013-03-16 34 views
1

我有这样Django-tastypie - 如何包含选择?

location_state = models.CharField(max_length=255, null=True, blank=True, choices=STATE_CHOICES) 

其价值的模型场由tastypie返回,而是呈现一个列表框的所有可用选项的列表是必要的。 通过资源公开此类选择的最佳方式是什么?

回答

1

我会使用built-in schema来通知客户有关字段选项。尽管如此,默认情况下,模式资源中不包含选项选项。 This thread显示了一个方法如何实现这一点。

编辑2013年3月19日

另外,您可以通过使用/覆盖在你的ModelResourcealter_list_data_to_serialize方法增加您的选择,元场。

+0

这将是一个额外的ajax请求 - 获取架构。是否有可能在json响应的“元”字段中添加选项? – AlexA 2013-03-18 11:38:51

+0

编辑我的回复 – 2013-03-19 15:32:59

1

我无法找到一个简单的方法,因为某种原因得到选择,但这会做到这一点。

YourModel._meta.get_field('location_state').choices 

你应该注意到,虽然,_meta是一个内部实现细节,但一直在与大量的应用和扩展,所以应该是比较安全使用的依据。

+0

对不起,我没有阅读关于通过资源公开的最后一点。我没有使用tastypie,所以我不能对此发表评论。不过,使用django-piston,你只需构建一个包含所有必需字段(和额外)的自定义资源,而不是定义资源应该反思哪个模型的'modelform'方法。 – 2013-03-16 13:19:18