Hi! I have a problem with my Django application.
I’m creating a web application for a company that allows it to manage the warehouse.
My problem is that I created a very structured database and now I would like to create a page that goes to enter the data without having to use the Django’s admin …
I know the names of the variables are in Italian, but it’s my first serious project and I wouldn’t want to get lost …
Anyway, this is the structure of my project:
models.py :
from django.db import models
# Create your models here.
class AziendaCity(models.Model):
city_ID = models.AutoField(primary_key=True, unique=True)
city = models.CharField(max_length=250, verbose_name='Città')
class Meta:
verbose_name = 'Città'
verbose_name_plural = 'Città'
def __str__(self):
return self.city
class AziendaAddress(models.Model):
address_ID = models.AutoField(primary_key=True, unique=True)
address = models.CharField(max_length=250, verbose_name='Indirizzo')
class Meta:
verbose_name = 'Indirizzo'
verbose_name_plural = 'Indirizzi'
def __str__(self):
return self.address
class AziendaCap(models.Model):
cap_ID = models.AutoField(primary_key=True, unique=True)
CAP = models.IntegerField()
def __str__(self):
return str(self.CAP)
class AziendaProvincia(models.Model):
provincia_ID = models.AutoField(primary_key=True, unique=True)
provincia = models.CharField(max_length=2)
class Meta:
verbose_name = 'Provincia'
verbose_name_plural = 'Province'
def __str__(self):
return self.provincia
class Azienda(models.Model):
id_azienda = models.AutoField(primary_key=True, unique=True)
nome_azienda = models.CharField(max_length=250, unique=True)
email_azienda = models.EmailField(blank=True)
city_ID = models.ForeignKey(AziendaCity, on_delete=models.CASCADE, verbose_name='Città')
address_ID = models.ForeignKey(AziendaAddress, on_delete=models.CASCADE, verbose_name='Indirizzo')
cap_ID = models.ForeignKey(AziendaCap, on_delete=models.CASCADE, verbose_name='C.A.P')
provincia_ID = models.ForeignKey(AziendaProvincia, on_delete=models.CASCADE, verbose_name='Provincia')
class Meta:
verbose_name = 'Azienda'
verbose_name_plural = 'Aziende'
def __str__(self):
return self.nome_azienda
class ProdottoNome(models.Model):
nome_ID = models.AutoField(primary_key=True, unique=True)
prodotto_nome = models.CharField(max_length=255, default='')
class Meta:
verbose_name = 'Nome Prodotto'
verbose_name_plural = 'Nome Prodotti'
def __str__(self):
return self.prodotto_nome
class Formato(models.Model):
formato_ID = models.AutoField(primary_key=True, unique=True)
formato = models.CharField(max_length=250, default='')
class Meta:
verbose_name = 'Formato'
verbose_name_plural = 'Formati'
def __str__(self):
return self.formato
class PrezzoPubblico(models.Model):
prezzo_pubblico_ID = models.AutoField(primary_key=True, unique=True)
prezzo_pubblico = models.DecimalField(
max_digits=99, decimal_places=2, default='')
class Meta:
verbose_name = 'Prezzo Pubblico'
verbose_name_plural = 'Prezzi Pubblici'
def __str__(self):
return str(self.prezzo_pubblico)
class Prodotto(models.Model):
product_ID = models.AutoField(primary_key=True, unique=True)
produttore = models.ForeignKey(Azienda, on_delete=models.CASCADE)
nome = models.ForeignKey(ProdottoNome, on_delete=models.CASCADE)
formato = models.ForeignKey(Formato, on_delete=models.CASCADE)
prezzo_pubblico = models.ForeignKey(PrezzoPubblico, on_delete=models.CASCADE)
quantity = models.IntegerField(verbose_name='Quantità', default=0)
class Meta:
verbose_name = 'Prodotto'
verbose_name_plural = 'Prodotti'
def __str__(self):
return str(self.nome)
@property
def statusProduct(self):
quantity = self.quantity
ottimo = ' Ottimo '
riserva = ' Riserva '
ordinare = ' Ordinare '
if quantity > 100 :
status = ottimo
elif 50 > quantity > 40:
status = riserva
elif 40 > quantity > 0:
status = ordinare
return status
forms.py :
from django import forms
from django.forms import ModelForm, TextInput, Select
from .models import *
# Form Inserimento Prodotto
class ProduttoreForm(forms.ModelForm):
class Meta:
model = Prodotto
fields = ['produttore']
widgets = {
'produttore' : forms.Select(attrs={'class':'form-control'})
}
class ProdottoNomeForm(forms.ModelForm):
prodotto_nome = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control', 'placeholder':'Inserisci il nome del prodotto'}))
class Meta:
model = ProdottoNome
fields = ['prodotto_nome']
class ProdottoFormatoForm(forms.ModelForm):
formato = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control','placeholder':'Inserisci il formato del prodotto'}))
class Meta:
model = Formato
fields = ['formato']
class ProdottoPrezzoPubblicoForm(forms.ModelForm):
prezzo_pubblico = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control','placeholder':'Inserisci il prezzo pubblico del prodotto'}))
class Meta:
model = PrezzoPubblico
fields = ['prezzo_pubblico']
class ProdottoQuantitàForm(forms.ModelForm):
quantity = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control','placeholder':'Inserisci la quantità del prodotto'}))
class Meta:
model = Prodotto
fields = ['quantity']
# Form Inserimento Azienda
class AziendaForm(forms.ModelForm):
class Meta:
model = Azienda
fields = '__all__'
views.py :
from django.shortcuts import redirect, render
from django.http import HttpResponseRedirect
from .models import Prodotto, Azienda, ProdottoNome
from .filters import ProductFilter
from .forms import ProdottoNomeForm, AziendaForm,ProduttoreForm,ProdottoFormatoForm,ProdottoPrezzoPubblicoForm,ProdottoQuantitàForm
# Create your views here.
def Magazzino(request):
prodotti = Prodotto.objects.all
aziende = Azienda.objects.all
#prodotto_nome = ProdottoNome.objects.all
productFilter = ProductFilter(request.GET, queryset=prodotti(),)
prodotti = productFilter.qs
return render(request, 'index.html', {'prodotti': prodotti, 'aziende': aziende, 'productFilter': productFilter})
def Aziende(request):
aziende = Azienda.objects.all
return render(request, 'aziende.html', {'aziende': aziende})
def inserisciProdotto(request):
prodotto_nome_form = ProdottoNomeForm
produttoreform = ProduttoreForm
prodotto_formato_form = ProdottoFormatoForm
prezzo_pubblico_form = ProdottoPrezzoPubblicoForm
prodotto_quantity = ProdottoQuantitàForm
context = { 'prodotto_nome_form':prodotto_nome_form,
'produttoreform':produttoreform,
'prodotto_formato_form':prodotto_formato_form,
'prezzo_pubblico_form':prezzo_pubblico_form,
'prodotto_quantity':prodotto_quantity
}
if request.method == 'POST':
produttoreform = ProduttoreForm(request.POST)
prodotto_nome_form = ProdottoNomeForm(request.POST)
prezzo_pubblico_form = ProdottoPrezzoPubblicoForm(request.POST)
prodotto_formato_form = ProdottoFormatoForm(request.POST)
prodotto_quantity = ProdottoQuantitàForm(request.POST)
if produttoreform.is_valid() and\
prodotto_nome_form.is_valid() and\
prezzo_pubblico_form.is_valid() and\
prodotto_formato_form.is_valid() and\
prodotto_quantity.is_valid():
produttoreform.save(commit=False)
prodotto_nome_form.save(commit=False)
prezzo_pubblico_form.save(commit=False)
prodotto_formato_form.save(commit=False)
prodotto_quantity.save(commit=False)
return redirect('')
return render(request, 'inserisci_prodotto.html', context)
and this is the html page :
{%extends 'base.html'%}
{% load static %}
{% block content %}
<div class="container">
<br>
<form action="" method="POST">
{% csrf_token %}
<div class="mb-3">
<label for="produttore" class="form-label">Produttore</label>
{{produttoreform.produttore}}
<div id="produttore" class="form-text">Seleziona dalla lista un'azienda</div>
</div>
<div class="mb-3 ">
<label for="prodotto_nome" class="form-label">Nome Prodotto:</label>
{{prodotto_nome_form.prodotto_nome}}
</div>
<div class="mb-3">
<label for="formato" class="form-label">Formato:</label>
{{prodotto_formato_form.formato}}
</div>
<div class="mb-3">
<label for="prezzo_pubblico" class="form-label">Prezzo Pubblico:</label>
{{prezzo_pubblico_form.prezzo_pubblico}}
</div>
<div class="mb-3">
<label for="quantity" class="form-label">Quantità:</label>
{{prodotto_quantity.quantity}}
</div>
<button type="submit" class="btn btn-outline-primary">Inserisci Prodotto</button>
</form>
<br>
<br>
</div>
{% endblock content %}
When I try to enter data to save, the page updates, as if it had saved the data without giving any error message.
But in reality the data is not saved in the database.
Why?!
Thanks for the support !