Джанго, Аякс + Общие внешние ключи - PullRequest
2 голосов
/ 24 августа 2010

У меня есть общий внешний ключ в одной из моих моделей:

# 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 ]

1 голос
/ 10 августа 2011

У меня были серьезные проблемы с использованием JSON и Generic Keys, это метод, который я использовал для решения своей проблемы. Я сначала составил список того, что мне нужно, например:

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

Затем выведите данные с простым json, найденным в django.utils

data = simplejson.dumps(some_list)

и затем вернуть данные в шаблон

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

Надеюсь, это поможет.

0 голосов
/ 24 августа 2010

Не уверен, если это связано, но сообщалось об ошибке сериализации contenttypes (# 7052 ; см. Связанные обсуждение ). Я считаю, что это было исправлено в Django 1.2. Какую версию Django вы используете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...