我想创建一个用于管理图书馆的 web 应用程序。我创建了书和类别模型。类别是书“历史文学 ..ect”的类,我希望在添加书时类别显示为选项。所以我把它放进去ModelChoiceField
,但是当我尝试将值保存ModelChoiceField
在数据库中时,它没有。
这是代码。
模型.py
from django.db import models
# Create your models here.
class Category(models.Model):
name = models.CharField(max_length=100)
class Livre(models.Model):
titre = models.CharField(max_length=30,null=True)
category=models.CharField(max_length=30,null=True)
num_category=models.ForeignKey(Category, on_delete=models.CASCADE,null=True)
auteur=models.CharField(max_length=30,null=True)
nombre_copie=models.IntegerField(default=0,null=True)
publisher=models.CharField(max_length=30,null=True)
表格.py
from django import forms
from . import models
from project.models import Category
class Ajouterlivre(forms.Form):
titre = forms.CharField(max_length=100)
category = forms.ModelChoiceField(queryset=Category.objects.values_list('name', flat=True))
auteur = forms.CharField(max_length=100)
nombre_copie = forms.IntegerField()
publisher = forms.CharField(max_length=100)
视图.py
def Ajoutlivre(request):
if request.method== 'POST':
form=forms.Ajouterlivre(request.POST)
if form.is_valid():
objt=Livre()
objt.titre = form.cleaned_data['titre']
objt.category= form.cleaned_data['category']
objt.auteur = form.cleaned_data['auteur']
objt.nombre_copie = form.cleaned_data['nombre_copie']
objt.publisher = form.cleaned_data['publisher']
objt.save()
return redirect('home')
else:
form=forms.Ajouterlivre()
return render(request,'livre/ajout-livre.html',{'form':form})