Ограничение результатов запроса Django для приложения ajax XML - PullRequest
0 голосов
/ 22 октября 2010

Вот моя модель:

class Members(models.Model):
    firstname         = models.CharField(max_length=30)
    lastname          = models.CharField(max_length=30)
    gender            = models.CharField(max_length=1)
    email             = models.EmailField()
    password          = models.CharField(max_length=30)
    country_code      = models.CharField(max_length=4, choices=COUNTRY_CHOICES)
    zip               = models.CharField(max_length=10)
    will_share        = models.IntegerField()
    will_chat         = models.IntegerField()
    priv_level        = models.IntegerField()
    email_format      = models.CharField(max_length=4, choices=EMAIL_CHOICES)
    created           = models.DateTimeField(auto_now_add=True)
    modified          = models.DateTimeField(auto_now=True)
    last_login        = models.DateTimeField(auto_now=True)
    active            = models.BooleanField()

Когда я делаю запрос следующим образом:

Members.objects.all()

Как ограничить возвращаемые поля.Мне нужны только имена, фамилии и фамилии и фамилии, чтобы эффективно создавать запрос, например:

SELECT firstname, lastname, last_login FROM members

Здесь много участников, и мне нужно отправить много данных XML в браузер, и я не хочу, чтобы всеполя возвращаются, так как это приведет к слишком большому объему данных.Я проверил все документы и не вижу, какой вариант использовать.

Есть ли простой способ превратить мой набор данных ограниченных полей в XML для возврата в браузер для использования в ajax?

Спасибо

Rich

Ответы [ 3 ]

1 голос
/ 22 октября 2010

Вы можете ограничить сам выбор с помощью .only(fields) или .defer(fields), установленных в вашем наборе запросов.Это вернет модели, которые будут выполнять отдельные операции выбора, чтобы заполнить пропущенные поля, если вы к ним получите доступ.

1 голос
/ 22 октября 2010
  1. QuerySet.values() позволит вам указать нужные поля, но тогда запрос больше не будет возвращать экземпляры модели.

  2. Сериализация . Но, конечно, если вы используете предыдущий метод, вы не сможете сериализовать его таким же образом. Попробуйте вместо этого использовать JSON .

0 голосов
/ 22 октября 2010

Я нашел ответ в конце на http://docs.djangoproject.com/en/dev/topics/serialization/

Можно ограничить поля, возвращаемые при фактической сериализации!

из сериализаторов импорта django.core data = serializers.serialize ('xml', SomeModel.objects.all (), fields = ('name', 'size'))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...