Django使用ajax在一个视图中显示两个模型?

Django使用ajax在一个视图中显示两个模型?,django,django-models,django-forms,django-views,django-templates,Django,Django Models,Django Forms,Django Views,Django Templates,我创建了一个视图,可以使用Ajax调用填写表单。这是代码: # models.py class CrudUser(models.Model): name = models.CharField(max_length=30, blank=True) address = models.CharField(max_length=100, blank=True) age = models.IntegerField(blank=True, null=True) # Views.p

我创建了一个视图,可以使用Ajax调用填写表单。这是代码:

# models.py

class CrudUser(models.Model):
    name = models.CharField(max_length=30, blank=True)
    address = models.CharField(max_length=100, blank=True)
    age = models.IntegerField(blank=True, null=True)

# Views.py

from .models import CrudUser
from django.views.generic import View
from django.http import JsonResponse

class CreateCrudUser(View):
    def  get(self, request):
        name1 = request.GET.get('name', None)
        address1 = request.GET.get('address', None)
        age1 = request.GET.get('age', None)

        obj = CrudUser.objects.create(
            name = name1,
            address = address1,
            age = age1
        )

        user = {'id':obj.id,'name':obj.name,'address':obj.address,'age':obj.age}

        data = {
            'user': user
        }
        return JsonResponse(data)'
但是如果我想在我的CreateCrudUser中添加一个新模型,我该怎么做呢? 广告示例如下:

# models.py

    class Dog(models.Model):
        name = models.CharField(max_length=30, blank=True)
        eyes_color= models.CharField(max_length=100, blank=True)
        age= models.IntegerField(blank=True, null=True)

如果狗和用户未连接(如上面的示例),我建议让ajax转到不同的URL以保存衍射类型,如转到
/user/add
以保存用户和
狗/add
以保存狗对象。。。如果你想在它们之间建立关系,那么你需要使用
FormSet
,这是Django中的一个很好的东西,它看起来像Django admin内联图,如图所示:

首先,您可以直接发送创建的对象,无需再次传递参数。要获取新对象,您必须与用户执行相同的操作:

class CreateCrudUser(View):
def  get(self, request):
    name1 = request.GET.get('name', None)
    address1 = request.GET.get('address', None)
    age1 = request.GET.get('age', None)


    dog_obj = Dog.objects.create(
        name = XXX,
        eyes_color = XXX,
        age = XXX
    )    

    obj = CrudUser.objects.create(
        name = name1,
        address = address1,
        age = age1
    )

    # you don't need this. user = {'id':obj.id,'name':obj.name,'address':obj.address,'age':obj.age}

    data = {
        'user': obj,
        'dog': dog_obj,
    }
    return JsonResponse(data)'
通过执行此操作,您可以通过以下方式从模板访问:

{{ dog.name }} is the boss, and {{ user.name }} is not.

例如。

太好了,谢谢你的回答。但是有一个问题:如果我想在同一个页面中显示每个模型的数据库,我怎么能得到它?当你说每个模型的数据库时,你指的是数据库中对象的信息,对吗?
dog.name
dog.eyes\u color
。如果是这种情况,并且您使用的是django模板,这就是我在最后所说的。使用
{{dog.name}
{{dog.eyes\u color}
。这将向您显示
obj_dog
信息,因为您将它作为数据中的
dog
变量发送到模板。与
用户
数据相同。