OrderForm не сохраняет данные в базу данных django
Я создаю webapp, который позволяет пользователю вводить информацию в форму, которая затем сохраняет данные в django. Все работает хорошо, я могу добавить информацию в форму в шаблоне и нажать submit, но данные не сохраняются в базу данных (я не могу увидеть их в моей панели администратора в таблице 'Order'. У меня есть if form.is_valid() form.save() в моем файле views.py, который должен ПОСТАВИТЬ данные в мою базу данных, но этого не происходит.
Кто-нибудь знает, что я делаю неправильно?
Заказ модели из models.py
class Order(models.Model):
STATUS = (
('Pending', 'Pending'),
('Out for delivery', 'Out for delivery'),
('Delivered', 'Delivered'),
)
# on_delete = If customer is delete, we dont delete child (orders), customer just becomes null without deleting order
customer = models.ForeignKey(Customer, null=True, on_delete= models.SET_NULL)
product = models.ForeignKey(Product, null=True, on_delete= models.SET_NULL)
date_created = models.DateTimeField(auto_now_add=True, null=True)
status = models.CharField(max_length=200, null=True, choices=STATUS)
forms.py
Класс OrderForm наследуется от CreateOrder views.py
from django.forms import ModelForm
from .models import Order
class OrderForm(ModelForm):
class Meta:
model = Order
fields = '__all__'
функция createOrder из views.py:
def createOrder(request):
form = OrderForm()
if request.method == 'POST':
#print('Printing POST:',request.POST)
form = OrderForm(request.POST)
#form handles the process of saving to database/
if form.is_valid():
form.save
return redirect('/')
context = {'form':form}
return render(request, 'accounts/order_form.html', context)
Вы вызываете функцию с помощью form.save, вы забыли ():
views.py
def createOrder(request):
form = OrderForm()
if request.method == 'POST':
#print('Printing POST:',request.POST)
form = OrderForm(request.POST)
#form handles the process of saving to database/
if form.is_valid():
form.save() # Here
return redirect('/')
context = {'form':form}
return render(request, 'accounts/order_form.html', context)