2015-07-10 37 views
1

可以說我有下面Django的foo_display與值()

Class Student(models.Model): 
    name=models.CharField(max_length=100); 
    status=models.IntegerField() 

狀態字段中顯示將僅具有值1,2 Django的模型。 是否有某種方式可以用它們相應的顯示值替換1,2: 每次我在values()方法中使用它們時都會說(通過,失敗),而不會進一步遍歷查詢集。 如:

像這樣

Student.objects.values(staus_display_value) 

使此方法返回的顯示值而不是分貝值的查詢集值

[{"name":"jane","status":"pass"}, 
{"name":"john","status":"fail"}] 

我知道Model.get_FOO_display()可以用來獲取單個對象的顯示值。

+0

您可以使用此方法http://stackoverflow.com/a/2224964/3033586並從您的查詢集使用數字抽象......如果不幫助 - 編輯您的問題,因爲它不清楚你想要什麼,也許添加queryset你有問題 – madzohan

+0

似乎是重複的http://stackoverflow.com/questions/9674860/django-using-values-and-get-foo-display – kmmbvnr

回答

0

是的,你可以做你的模型如下:

Class Student(models.Model): 
    X_CHOICES = (
      (u'1', u'Pass'), 
      (u'2', u'Fail'), 
     ) 
    name=models.CharField(max_length=100); 
    status = models.IntegerField(default=1,choices=X_CHOICES) 

希望這有助於。

+0

我該如何包括這些標籤在values()方法中? – jithin

+0

您不需要調用這些值,因爲默認顯示值將是「通過」/「失敗」。 – navneet35371

+0

顯示值將是「通過」/「失敗」,但保存在數據庫中的值將是「1」/「2」,即取決於選擇 – navneet35371

1

試試這個

class Student(models.Model): 
    X_CHOICES = (
      (1, 'Pass'), 
      (2, 'Fail'), 
     ) 
    name=models.CharField(max_length=100); 
    status = models.IntegerField(default=1,choices=X_CHOICES) 

>>>Student.objects.create(name="myname") 
>>>s = Student.objects.get(name="myname") 
>>>s.get_status_display() 
'Pass' 
+0

這個效果很好單個對象。請看@我的問題編輯 – jithin