我的一个模型中有一个通用外键:
# 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正在运行,但它不会返回与目标字段相关的对象。 我怎么能这样做?
答案 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?