【发布时间】:2020-11-05 14:57:12
【问题描述】:
我正在尝试使用 Django 将模型中的属性调用到我的 HTML 模板中。发生了一些奇怪的事情,因为我只能将我的两个模型之一调用到模板中。据我通过查看我的数据库可以看出,这两种模型都运行良好。这就是我的models.py 的样子
class Respondez(models.Model):
responder = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='scores')
score = models.IntegerField(default=0)
post_time = models.DateTimeField(default=timezone.now)
class Meta:
ordering = ['post_time']
def __str__(self):
return self.score
class Profilez(models.Model):
newuser = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True,null=True)
preference = models.CharField(max_length=30)
def __str__(self):
return self.newuser
我正在尝试致电Profilez。 但是,只能调用Respondez。这是我调用的视图,我对其进行了简化。
@login_required
def add(request):
p = Profilez()
z = Respondez()
context = {
'p' : p,
'z' : z
}
return render(request, 'rating/add.html', context)
为了测试我是否可以调用我的模型,我在 HTML 中为我的模板添加了简单的标题标签 add.html:
{% extends "rating/base.html" %}
{% block content%}
<h3> {{user.username}} </h3>
<h3> {{ z.post_time }}</h3>
<h3>{{ p.preference }}</h3>
无论我从模型中调用哪个属性,Respondez 的行都有效,但我的 Profilez 模型无效。尽管我的数据库为两个模型的每个属性都保存了值,但这是事实。
我从单独模板的以下视图中获取preference 的输入(第一行不会粘贴正确的缩进),其中用户选择 2 个选项之一:
def onboarding2(request):
p = Prof()
p.newuser = request.user
if request.method == 'POST':
selected_opt = (request.POST['ob'])
if selected_opt == 'mood':
p.preference = 'mood'
elif selected_opt == 'productivity':
p.preference = 'productivity'
else:
return HttpResponse(400, 'Invalid form')
p.save()
return redirect('rating-onboarding3')
context = {
'p' : p,
}
return render(request, 'rating/onboard2.html', context)
如何准确调用我的 Profilez 模型?这里有什么问题?
【问题讨论】:
-
只是在这里,还是您也忘记了代码中
class Respondez块的缩进? -
抱歉,它粘贴不正确,但我的文件中有正确的缩进
标签: html django django-models django-templates