我可能会尝试一些类似如下:
# models.py
class Question(models.Model):
QUESTION_NAMES = (
'Blurb',
'Group Header',
'Group Footer',
'Sub-Group Header',
'Sub-Group Footer',
'Save Button',
'Standard Question',
'Text-Area Question',
'Multiple-Choice Question',
'Standard Sub-Question',
'Multiple-Choice Sub-Question')
QUESTION_VALS = (10, 20, 21, 30,
31, 50, 100, 105, 110,
120, 130)
QUESTION_TYPES = tuple(zip(QUESTION_VALS, QUESTION_NAMES))
# Personal choice here: I never name attribs after Python built-ins:
qtype = models.IntegerField(default=100,choices=QUESTION_TYPES)
下,我认为应该
不起作用(以下是我最初的intui序列化对象列表,但它不起作用。无论如何,我会把它放在这里,因为它看起来应该可以工作。)
好的,所以我们有一种方法来自己访问字符串,现在我们只需要序列化它们,为此,我'd可能会尝试使用ListField
in DRF3,这应该支持source
kwarg,我会想?
# serializers.py
from .models import Question
class YourSerializer(ModelSerializer):
names = serializers.ListField(
child=serializers.CharField(max_length=40),
source=Question.QUESTION_NAMES
)
class Meta:
model = Question
fields = ('names', etc.)
下不会返回结果列表
预置:使用SerializerMethodField
:
from .models import Question
class YourSerializer(serializers.ModelSerializer):
...
names = serializers.SerializerMethodField()
def get_names(self, obj):
return Question.QUESTION_NAMES
class Meta:
model = Question
演示:
In [1]: q = Question.objects.create()
Out[1]: <Question: Question object>
In [2]: ser = YourSerializer(q)
In [3]: ser.data
Out[3]: {'id': 1, 'names': ['Blurb', 'Group Header', 'Group Footer', 'Sub-Group Header', 'Sub-Group Footer', 'Save Button', 'Standard Question', 'Text-Area Question', 'Multiple-Choice Question', 'Standard Sub-Question', 'Multiple-Choice Sub-Question'], 'qtype': 100}
通过URL揭露这一模式。在您的AngularJS控制器中执行'$ http.get()'来检索所有的值。将这些值粘贴在'$ scope'变量(称为'foo')。然后引用'foo'作为你的'
我读你的建议,这只是一个常规的API调用,将返回表中的所有行,不是吗?我不想要一个返回表格行的API - 我已经有了。我想要一个简单地返回QUESTION_TYPES的API - 11行数据,即使模型的表本身是空的。我无法可靠地从表格行重新构建QUESTION_TYPES,因为可能没有任何给定类型的表格行。 – John 2015-03-25 03:51:36
啊。然后,您可以创建一个具有该类型所有值的模型。 – 2015-03-25 04:26:37