这是我的模特:
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()
如何限制返回的字段。我只想要firstname,lastname和last_login,以便有效地创建一个类似的查询:
SELECT firstname, lastname, last_login FROM members
有很多成员,我需要向浏览器发送大量XML数据,并且不希望返回所有字段,因为它会过多地压缩数据。我检查了所有文档,但无法查看要使用的选项。
我是否有一种简单的方法可以将我的有限字段数据集转换为XML以返回浏览器以在ajax中使用?
由于
富
答案 0 :(得分:1)
QuerySet.values()
将允许您指定所需的字段,但查询将不再返回模型实例。
Serialization。但是,当然如果您使用以前的方法,那么您可能无法以相同的方式序列化它。请考虑使用JSON代替。
答案 1 :(得分:1)
您可以在查询集上设置.only(fields)
或.defer(fields)
来限制选择本身。如果您访问它们,这将返回将执行单个选择以填充缺失字段的模型。
但无法回答XML序列化部分。
答案 2 :(得分:0)
我最后在http://docs.djangoproject.com/en/dev/topics/serialization/
找到了答案可以限制实际序列化中返回的字段!
来自django.core导入序列化程序 data = serializers.serialize('xml',SomeModel.objects.all(),fields =('name','size'))