Django submit form POST not valid
Я пытаюсь отправить форму для заполнения базы данных. Я не могу заставить POST работать. Он не выглядит корректным, но я не могу понять, что мне нужно сделать, чтобы исправить это.
Я включил отладку, чтобы посмотреть, что происходит, когда я нажимаю кнопку submit & POST отправляется. Я не могу понять, как отправить created_at или created_by. Я предполагаю, что это причина того, что POST не действителен и база данных не заполняется.
models.py
from django.db import models
from django.contrib.auth.models import User
from django.forms import ModelForm
class Order(models.Model):
order_name = models.CharField(max_length=100, unique=True, null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(User, related_name='Project_created_by', on_delete=models.DO_NOTHING)
def __str__(self):
return self.order_name
class Ce_Base(models.Model):
ce_hostname = models.CharField(max_length=15)
new = models.BooleanField()
location = models.TextField()
order_reference = models.ManyToManyField(Order)
forms.py
from django.forms import ModelForm
from .models import Order
class OrderForm(ModelForm):
class Meta:
model = Order
fields = ['order_name']
views.py
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from .models import Order
from .models import Ce_Base
from .forms import OrderForm
@login_required
def home(request):
form = OrderForm()
if request.method == 'POST':
form = OrderForm()
form.instance.created_by = request.user
print(request.POST)
if form.is_valid():
form.save()
context = {
'order': Order.objects.all(),
'form': form,
}
return render(request, 'orchestration/order_create.html', context)
@login_required
def orderprocessing(request):
context = {
'ce_base': Ce_Base.objects.all()
}
return render(request, 'orchestration/order_processing.html', context)
html
{% extends "orchestration/base.html" %}
{% block content %}
<h1>Input Form</h1>
<form action="" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" >
</form>
<h1>Orders</h1>
{% for each_order in order %}
<p>Order Name: {{ each_order.order_name }}</p>
<p>Created On: {{ each_order.created_at }}</p>
<p>Created By: {{ each_order.created_by }}</p>
{% endfor %}
{% endblock content %}
Вот вывод моего терминала, когда я нажимаю кнопку отправки
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
May 12, 2022 - 16:15:40
Django version 4.0.2, using settings 'dcn_automation.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
<QueryDict: {'csrfmiddlewaretoken': ['MQVrDwqyT8Y6ARAF9CCyuCSwavz5BAVmi2GdxMgvxFlHmiD1M8Cq6y0VRVummR82'], 'order_name': ['test']}>
Если не передать данные в форму, валидация не пройдет.
form = OrderForm(request.POST)