Python Django-objects.all()不显示任何内容
我试图从模型中获取Django中的对象列表 我只想从请求用户那里获取“dht节点”列表,但它在html文件中没有显示任何内容(好像列表是空的)。我正在使用的用户有2个“dht节点”,它们显示在django admin中 我不知道出了什么问题,因为如果我在views函数中使用指令“member.dht.create(…)”,然后像这样创建一个新的“dht节点”,就会显示这个。只有通过表单输入的“dht节点”不显示。可以是表格吗 非常感谢,以下是我的代码: Models.pyPython Django-objects.all()不显示任何内容,python,html,django,database,admin,Python,Html,Django,Database,Admin,我试图从模型中获取Django中的对象列表 我只想从请求用户那里获取“dht节点”列表,但它在html文件中没有显示任何内容(好像列表是空的)。我正在使用的用户有2个“dht节点”,它们显示在django admin中 我不知道出了什么问题,因为如果我在views函数中使用指令“member.dht.create(…)”,然后像这样创建一个新的“dht节点”,就会显示这个。只有通过表单输入的“dht节点”不显示。可以是表格吗 非常感谢,以下是我的代码: Models.py 类节点(models.
类节点(models.Model):
name=models.CharField(主键=True,null=False,最大长度=50)
description=models.CharField(默认值=None,null=False,最大长度=250)
topic=models.CharField(默认值=None,null=False,max_length=50,unique=True)
def ___; unicode(自):
返回self.name
dht类(节点):
temp=models.IntegerField(默认值=None,null=True)
hum=models.IntegerField(默认值=None,null=True)
类UserProfile(用户):
uid=models.CharField(默认值=None,null=False,最大长度=250)
dht=models.ManyToManyField(dht,blank=True)
def ___; unicode(自):
返回self.user.username
Views.py-dht列表-
@login\u必需(login\u url='/web/login')
def listDhtSensor(请求):
成员=request.user.userprofile
list=member.dht.all()
返回呈现(请求'web/listDhtSensor.html',{'list':list})
Html-listDhtSensor.Html-
{%block content%}
{列表%中的dht为%1}
{{dht.name}
{{dht.topic}
{%endfor%}
{%endblock%}
Forms.py
类newDHTSensorForm(forms.ModelForm):
类元:
型号=dht
字段=['name',
“说明”,
'主题',]
标签={'name':'name',
'说明':'说明',
'主题':'主题',}
排除=['temp','hum']
Views.py-dht表单-
@login\u必需(login\u url='/web/login')
def新DHT传感器(请求):
如果request.method==“POST”:
form=newDHTSensorForm(request.POST)
如果form.is_有效():
post=form.save(commit=False)
post.save()
返回重定向('/web/dhtDetail')
其他:
form=newDHTSensorForm()
返回呈现(请求'web/newDhtSensor.html',{'form':form})
Html-newDhtSensor.Html-
{%block content%}
{%csrf_令牌%}
{{form.name.errors.as_text}
姓名:
说明:
{{form.topic.errors.as_text}
主题:
拯救
{%endblock%}
它没有显示任何内容,因为您没有将您的dht
对象链接到该UserProfile
,因此,如果您稍后查询该UserProfile
的dht
,显然列表是空的。您应该将其添加到dht
关系中,如:
@login_required(login_url = '/web/login')
def newDHTSensor(request):
if request.method == "POST":
form = newDHTSensorForm(request.POST)
if form.is_valid():
post = form.save()
request.user.userprofile.dht.add(post)
return redirect('/web/dhtDetail')
else:
form = newDHTSensorForm()
return render(request, 'web/newDhtSensor.html', {'form': form})
@login\u必需(login\u url='/web/login')
def新DHT传感器(请求):
如果request.method==“POST”:
form=newDHTSensorForm(request.POST)
如果form.is_有效():
post=form.save()
request.user.userprofile.dht.add(post)
返回重定向('/web/dhtDetail')
其他:
form=newDHTSensorForm()
返回呈现(请求'web/newDhtSensor.html',{'form':form})
请注意,您首先需要保存
post
,因此应该省略commit=False
参数。它不显示任何内容,因为您没有将您的dht
对象链接到该UserProfile
,因此,如果您以后查询该UserProfile
的dht
,显然该列表是空的。您应该将其添加到dht
关系中,如:
@login_required(login_url = '/web/login')
def newDHTSensor(request):
if request.method == "POST":
form = newDHTSensorForm(request.POST)
if form.is_valid():
post = form.save()
request.user.userprofile.dht.add(post)
return redirect('/web/dhtDetail')
else:
form = newDHTSensorForm()
return render(request, 'web/newDhtSensor.html', {'form': form})
@login\u必需(login\u url='/web/login')
def新DHT传感器(请求):
如果request.method==“POST”:
form=newDHTSensorForm(request.POST)
如果form.is_有效():
post=form.save()
request.user.userprofile.dht.add(post)
返回重定向('/web/dhtDetail')
其他:
form=newDHTSensorForm()
返回呈现(请求'web/newDhtSensor.html',{'form':form})
请注意,您首先需要保存post
,因此应该省略commit=False
a参数