您好,我确实需要帮助,已经尝试了很多天,但仍然无法解决。我是Django的新手。
问题:我无法在MySQL数据库中检索数据以将其显示在下拉列表中。有谁可以帮助我吗?非常感谢!
models.py
class paper(models.Model):
id = models.CharField(max_length=70, primary_key=True, null=False)
year = models.TextField(null=True)
month = models.TextField(null=True)
number = models.IntegerField(null=True)
def __str__(self):
return str(self.id)
Views.py
def dropdown_list(request):
paper = paper.objects.all()
pname = request.GET.get('paper_id')
context = {
"paper": paper,
"name": pname
}
return render(request, 'exampapersNew/exampaper.html', context)
exampaper.html
<form id="form1" method="GET">
{% csrf_token %}
<u>SELECT YEAR</u><br><br>
<select>
{% if paper %}
{% for p in paper %}
<option value="{{ p.id }}">{{ p.year }} {{ p.month }} Paper {{ p.number }}</option>
{% endfor %}
{% endif %}
</select>
</form>
urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^feedback/', include('feedback.urls')),
url(r'^exampapersNew/', include('exampapersNew.urls')),
url(r'^$', views.HomeView, name = 'home'),
url(r'^feedback', views.FeedbackM, name = 'feedback'),
url(r'^exampapersNew', views.ExampapersNewView, name = 'exampapersNew'),
url(r'^frequentlyasked', views.FrequentlyaskedView, name = 'frequentlyasked'),
url(r'^api/', include(v1_api.urls)),
url(r'^exampapersNew/<int:paper_id>/', views.EMaths_Menu, name = 'paper_archive'),
url(r'^formula', views.e_math_concept, name = 'formula'),
]
forms.py
class DropdownForm(forms.Form):
class Meta:
model = paper
fields = ['id', 'year', 'month', 'number']
mySQL表
mysql> SELECT * from exampapersnew_paper;
+-----------+------+----------+--------+
| id | year | month | number |
+-----------+------+----------+--------+
| 200801001 | 2008 | November | 1 |
| 200801002 | 2008 | November | 2 |
| 200901001 | 2009 | November | 1 |
+-----------+------+----------+--------+
3 rows in set (0.00 sec)
答案 0 :(得分:0)
render函数需要传递一些上下文。您仅表示要渲染的位置,而不是上下文。 示例:
def product_list(request):
category = Category.objects.all()
context = {
'category': category,
}
return render(request, 'shop/product/list.html', context)
请注意,这里的类别是在list.html中呈现的,因为上下文是通过render函数传递的。
答案 1 :(得分:0)
尝试一下,选择
{% if paper %}
{% for p in paper %}
<option value="{{ p.id }}">{{ p.year }} {{ p.month }} Paper {{ p.number }} </option>
{% endfor %}
{% endif %}
也请阅读本教程django tutorial part 3。
django模型还具有默认的主键属性,您也可以使用它。
答案 2 :(得分:0)
首先最好用大写字母(class Paper(models.model)
)给班级命名
第二,我认为您的网址应类似于
url(r'^exampapersNew/?paper_id=<int:paper_id>/', views.EMaths_Menu)
paper_id前面的问号,以便通过request.GET.get('paper_id')
我正在竭尽全力为您提供帮助,但是如果没有所有代码,我将无法理解您要做什么。请把您的代码推送到github,让我知道。