Модель выбора поля сохранить в базе данных django - PullRequest
0 голосов
/ 03 февраля 2020

Я хочу создать веб-приложение для управления библиотекой. Я создаю книгу и модель категории. Категория - это класс книги «Историческая литература… .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)

forms.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)

views.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})
...