我正在使用ModelForm創建一個表單,然后我使用這個表單在資料庫中創建一個新實體。但是表單并沒有保存資料,它只是在表單提交時重新加載頁面。
我也在上傳圖片。
表格.py
from django import forms
from django_summernote.widgets import SummernoteWidget
from events.models import Event
class EventCreateForm(forms.ModelForm):
class Meta:
model = Event
fields = "__all__"
widgets = {
"content": SummernoteWidget(),
}
def __init__(self, *args, **kwargs):
super(EventCreateForm, self).__init__(*args, **kwargs)
for visible in self.visible_fields():
visible.field.widget.attrs["class"] = "form-control"
self.fields["start_datetime"].widget.attrs["class"] = " datetimepicker"
self.fields["finish_datetime"].widget.attrs["class"] = " datetimepicker"
self.fields["image"].widget.attrs["class"] = "custom-file-input"
self.fields["address"].widget.attrs["rows"] = 3
視圖.py
from django.urls import reverse_lazy
from django.views.generic import ListView
from django.views.generic.edit import FormView
from django.contrib.auth.mixins import LoginRequiredMixin
from events.models import Event
from events.forms import EventCreateForm
class EventListView(LoginRequiredMixin, ListView):
model = Event
context_object_name = "events"
class EventFormView(LoginRequiredMixin, FormView):
template_name = "events/event_form.html"
form_class = EventCreateForm
success_url = reverse_lazy("dashboard:events:home")
event_form.html
<form action="" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="card-body">
<div class="form-group">
<label>Title</label>
{{ form.title }}
</div>
<div class="row">
<div class="col-sm-4">
<div class="form-group">
<label>Start Date and Time</label>
{{ form.start_datetime }}
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<label>Finish Date and Time</label>
{{ form.finish_datetime }}
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<label for="exampleInputFile">Image</label>
<div class="input-group">
<div class="custom-file">
{{ form.image }}
<label class="custom-file-label">Choose file</label>
</div>
</div>
</div>
</div>
</div>
<div class="form-group">
<label>Address</label>
{{ form.address }}
</div>
<div class="form-group">
<label>Content</label>
{{ form.content }}
</div>
</div>
<!-- /.card-body -->
<div class="card-footer">
<button type="submit" class="btn btn-primary">Publish</button>
<a href="#" class="btn btn-default float-right">Cancel</a>
</div>
</form>
uj5u.com熱心網友回復:
一個FormView不不保存表單。.form_valid(…)可以重寫該方法以指定在表單有效的情況下要執行的操作。在這里使用CreateView[Django-doc]更有意義,它將保存表單并將資料存盤到資料庫中:
from django.views.generic import CreateView
class EventFormView(LoginRequiredMixin, CreateView):
template_name = "events/event_form.html"
form_class = EventCreateForm
model = Event
success_url = reverse_lazy("dashboard:events:home")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/373820.html
標籤:姜戈 django-forms
