Django使用ajax在一个视图中显示两个模型?
我创建了一个视图,可以使用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
# 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
变量发送到模板。与用户
数据相同。