2013-03-16 65 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