0

我有一个模型,Entry类型Foreign Keyauthor, User:

author = models.ForeignKey(User, default=None)

我定期使用 AJAX 轮询服务器,并有一个视图返回Entry响应中的任何新对象,并以 JSON 格式序列化。这是代码:

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')

这将为我的所有其他字段返回完全精细的数据Entry,但是当我在我的 Javascript 中动态记录/打印/附加Entry.author时,它会为我提供作者的 id 字段。我已经检查了 JS 中的序列化对象,并且没有其他字段author可以获取。

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

4

1 回答 1

0

似乎您定义了一个自然键

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'),)

你将能够实现你想要的。

于 2013-05-13T14:04:48.943 回答