Bootstrap 4 Select Form字段不适用于Django

时间:2019-09-29 07:39:26

标签: django forms bootstrap-4 html-select

我是django的新手,并且在django中使用bootstrap4形式。当我使用输入字段 text date 时,它可以正常工作并将数据保存到django admin中,但是如果我将 Select 添加为类别,则不会工作并返回以下错误: ValueError位于/ 视图app_budgetlist.views.home没有返回HttpResponse对象。而是返回None。

我已经连续工作了2天,却不知道出了什么问题!你能帮忙吗? [注:更新了代码,因为@Caleb Goodman告诉我仍然没有运气] 这是我的代码:

models.py

from django.db import models

# Create your models here.
class Category(models.Model):
    name = models.CharField(max_length=100)
    def __str__(self):
        return self.name

class MonthlyBudget(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    budget_amount = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True)

forms.py

from django import forms
from .models import MonthlyBudget

class MonthlyBudgetForm(forms.ModelForm):
    class Meta:
        model = MonthlyBudget
        fields = ['category', 'budget_amount']

view.py

from django.shortcuts import render, redirect
from .models import Category, MonthlyBudget
from .forms import MonthlyBudgetForm 

def home(request):
    project = MonthlyBudget.objects.all()
    categories = Category.objects.all()
    if request.method == "POST":
        form =  MonthlyBudgetForm(request.POST or None)
        if form.is_valid():
            form.save()
            return render(request, 'home.html', {'project':project, 'categories':categories})
    else:
        return render(request, 'home.html', {'project':project, 'categories':categories})

home.html

<form class="form-inline" method="POST">
                    {% csrf_token %}
                    <input type="text" name="budget_amount" class="form-control mb-2 mr-sm-2" id="budget-amount" placeholder="Amount">
                    <div class="form-group">
                            <label for="category">Select Category</label>

                            <select id="category" class="taskCategory" name="category">
                                <option class="disabled" value="">Choose a category</option>
                                {% for category in categories %}
                                    <option class="" value="{{ category.name }}" name="{{ category.name }}">{{ category.name }}</option>
                                {% endfor %}
                            </select>
                    </div>
                    <button type="submit" class="btn btn-primary mb-2">Add Project</button>
                </form>

admin.py

from django.contrib import admin
from .models import MonthlyBudget, Category

admin.site.register(MonthlyBudget)
admin.site.register(Category)

1 个答案:

答案 0 :(得分:0)

保存表单后,您忘记返回响应:

def home(request):
    project = MonthlyBudget.objects.all()
    categories = Category.objects.all()
    if request.method == "POST":
        form =  MonthlyBudgetForm(request.POST or None)
        if form.is_valid():
            form.save()
            return render(request, 'home.html', {'project':project, 'categories':categories})
    else:
        return render(request, 'home.html', {'project':project, 'categories':categories})