更改JSON序列化外键的字符串表示

时间:2013-05-13 13:41:36

标签: python ajax django json

我的模型Entry的{​​{1}},Foreign Key类型为author

User

我定期使用AJAX轮询服务器,并有一个视图,它返回响应中的任何新author = models.ForeignKey(User, default=None) 对象,以JSON格式序列化。这是代码:

Entry

这会返回所有其余def pollNewEntries(request): if request.method == 'GET': delta = datetime.timedelta(seconds=19) # Determine if there are any new posts since 19 seconds before current # time. AJAX polls server every 10 seconds. Stores ids of new posts and # checks those against any incoming posts, ignoring duplicates. cutOff = timezone.now() - delta newEntries = Entry.objects.filter(pubDate__gt=cutOff) data = serializers.serialize('json', newEntries) return HttpResponse(data, mimetype='application/json') 字段的完整数据,但是当我在Javascript中动态记录/打印/追加Entry时,它会给我作者的id字段。我已经检查了JS中的序列化对象,Entry.author中没有其他字段可以获取。

有没有办法更改序列化数据中author的哪个部分?基本上,我希望我的视图返回author字段的author.name而不是author.id的JSON对象。

1 个答案:

答案 0 :(得分:0)

似乎是define a natural key

from django.db import models

class PersonManager(models.Manager):
    def get_by_natural_key(self, first_name, last_name):
        return self.get(name=first_name)

class Person(models.Model):
    objects = PersonManager()

    name = models.CharField(max_length=100)

    birthdate = models.DateField()

class Meta:
    unique_together = (('name'),)

你将能够实现你想要的目标。

相关问题