简体   繁体   中英

Django, Ajax + Generic foreign keys

I have a generic foreign key in one of my models:

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

Now I'd like to fetch all the tasks and it's "targets" with AJAX:

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

The Ajax-Call is working so far, but it doesn't return the objects related to the target-field. How can I do that?

I had serious problems using JSON and Generic Keys, this is the method i used to solve my problem. I first made a list of the thing i need for example:

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

Then, dump the data with simple json found in django.utils

data = simplejson.dumps(some_list)

and then return the data to the template

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

Hope it helps.

Not sure if this is related, but there was a bug reported about the serialization of contenttypes (# 7052 ; see related discussion ). I believe it was fixed in Django 1.2. Which version of Django are you using?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM