Как запросить разницу данных из функции __unicode __ () в Django - PullRequest
0 голосов
/ 06 ноября 2011

У меня была модель:

class Menu(models.Model):
     menu_id=models.CharField(max_length=30)
     name_vi=models.CharField(max_length=80)
     name_en=models.CharField(max_length=80)

     def get_all_menu(self):
          return Menu.objects.all()

     def __unicode__(self):
          return self.name_vi

     class Admin:pass

при вызове get_all_menu, я хочу, чтобы он возвращал 2d массив модели меню, включающий 3 поля: menu_id, menu_vi, menu_en. Но он возвращает только name_vi, аналогично функции unicode .

Могу ли я запросить полные 3 поля в этой ситуации?

1 Ответ

0 голосов
/ 06 ноября 2011

Во-первых, метод get_all_menu должен быть методом Model Manager, а не методом Model, как у вас, поскольку он является функцией, которая действует на всю таблицу, а не на одну строку / экземпляр:

class MenuManager(models.Manager):
    def get_all_menu(self):
      return self.objects.all()

class Menu(models.Model):
    objects = MenuManager()

Так что теперь вы можете использовать это, чтобы получить все строки таблицы:

Menu.objects.get_all_menu()

Во-вторых , функция unicode не имеет ничего дляделать с запросами.Это просто функция, которая помогает отображать чувствительное имя для объекта при его печати. ​​

В-третьих , почему вы хотите, чтобы 2d-массив возвращался при запросе базы данных?Когда вы выполняете запрос, вы получаете 3 объекта обратно, поэтому у вас есть ссылка на все их атрибуты / столбцы:

menus = Menu.objects.get_all_menus()
for menu in menus:
    print menu.menu_id
    print menu.name_vi
    print menu.name_en
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...