Bootstrap 4 поле выбора формы не работает с Django - PullRequest
1 голос
/ 29 сентября 2019

Я новичок в django и использую форму bootstrap4 с django.Когда я использую поле ввода text и date , оно работает нормально и сохраняет данные в django admin, но если я добавлю Select для категорий, оно не будет работать и возвращаетследующая ошибка: ValueError at / Представление app_budgetlist.views.home не возвращало объект HttpResponse.Вместо этого он вернул None.

Я работал два дня подряд и не мог понять, в чем дело!Можете ли вы помочь, пожалуйста?[NB Обновил код, так как @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 голосов
/ 29 сентября 2019

Вы забыли вернуть ответ после сохранения формы:

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})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...