【发布时间】:2015-05-28 14:04:19
【问题描述】:
我有一个使用 Django 选择字段的模型,如下所示:
class Question(models.Model):
QUESTION_TYPES = (
(10,'Blurb'),
(20,'Group Header'),
(21,'Group Footer'),
(30,'Sub-Group Header'),
(31,'Sub-Group Footer'),
(50,'Save Button'),
(100,'Standard Question'),
(105,'Text-Area Question'),
(110,'Multiple-Choice Question'),
(120,'Standard Sub-Question'),
(130,'Multiple-Choice Sub-Question')
)
type = models.IntegerField(default=100,choices=QUESTION_TYPES)
我正在使用 Django Rest Framework 将此模型作为 API 呈现给 Angular Web 应用程序。在我的 Angular Web 应用程序中,我想要一个包含所有这些选项的组合框小部件。不是整数,而是文本选择,例如“模糊”、“标准问题”等。
现在,我可以将组合框手动编码到 Angular 应用程序中,但是本着 DRY 的精神,是否可以编写一个仅返回这些选项(即 QUESTION_TYPES 对象)的 DRF 序列化程序,以便我可以填充组合带有 ReST 查询的框?
“可能”,我想我的意思是“简单而优雅”。也许我也指“ReSTful”。 (这样做是不是 ReSTful?)
只是想知道。 . .
谢谢
约翰
【问题讨论】:
-
通过 URL 公开该模型。在您的 AngularJS 控制器中执行
$http.get()以检索所有值。将这些值粘贴到$scope变量上(称为foo)。然后将foo引用为ng-options元素的ng-options属性。 -
按照我阅读您的建议的方式,这只是一个常规的 API 调用,它会返回表中的所有行,不是吗?我不想要返回表格行的 API——我已经有了。我想要一个简单地返回 QUESTION_TYPES - 11 行数据的 API,即使模型的表本身是空的。我无法从表行可靠地重建 QUESTION_TYPES,因为可能没有任何给定类型的表行。
-
啊。然后您可以创建一个模型,该模型确实具有该类型的所有值。
标签: django angularjs rest django-rest-framework