2015-07-10 4 views
1

Допустим, у меня есть DJANGO модель, показанную нижеДжанго foo_display со значениями()

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

поле статуса будет иметь только значения 1,2. Есть ли способ, которым я могу заменить 1,2 соответствующими значениями отображения сказать (пропустить, сбой) каждый раз, когда я использую их в методах values ​​(), без повторения запроса по запросу. например:

что-то вроде этого

Student.objects.values(staus_display_value) 

так, что это возвращает значение QuerySet с дисплеем значениями вместо дб значений

[{"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

Вам не нужно вызывать значения, поскольку отображаемое значение по умолчанию будет «pass»/«fail». – navneet35371

+0

Отображаемые значения будут либо «pass»/«fail», но значения, сохраненные в db, будут «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

это хорошо работает один объект. Пожалуйста, посмотрите @ мой вопрос edit – jithin

Смежные вопросы