Skip to main content
 首页 » 编程设计

python之Django、Ajax + 通用外键

2025年05月04日29lidabo

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

# 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 正在运行,但它没有返回与目标字段相关的对象。 我该怎么做?

请您参考如下方法:

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

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

希望对您有所帮助。