Django,Ajax +通用外键

时间:2010-08-24 09:15:48

标签: python django

我的一个模型中有一个通用外键:

# models.py  
class Tasks(models.Model):  
    content_type = models.ForeignKey(ContentType, limit_choices_to=tasktype_limits, null=True, blank=True)  
    object_id = models.PositiveIntegerField(null=True, blank=True, )  
    target = generic.GenericForeignKey('content_type', 'object_id')  
    ttype = models.ForeignKey('TaskType')  
    status = models.CharField(max_length = 60, null=False, blank=False)  
    comments = models.TextField(null=True, blank=True, )  

现在我想用AJAX获取所有任务和它的“目标”:

# views.py  
def get_tasks(request, task_id):  
    tasks = Tasks.objects.all()  
    return HttpResponse(serializers.serialize('json', tasks))`

到目前为止,Ajax-Call正在运行,但它不会返回与目标字段相关的对象。 我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我在使用JSON和Generic Keys方面遇到了严重问题,这是我用来解决问题的方法。我首先列出了我需要的东西,例如:

some_list = [some.pk,some.CONTENT_OBJECT.name] for some in GenericModel.objects.all()]

然后,使用django.utils中的简单json转储数据

data = simplejson.dumps(some_list)

然后将数据返回到模板

return HttpResponse(data, mimetype='aplication/json')

希望它有所帮助。

答案 1 :(得分:0)

不确定这是否相关,但报告了有关contenttypes序列化的错误(#7052;请参阅相关的discussion)。我相信它已在Django 1.2中得到修复。您使用的是哪个版本的Django?