Django CreateView не может создать объект модели - PullRequest
0 голосов
/ 04 декабря 2018

Я использую Django CreateView на объекте модели.Форма обрабатывается, но при отправке кнопки Post ничего не происходит.В консоли я получаю код 200 (Успех), но объект не создан.Кроме того, я использую тот же шаблон HTML и тот же код для просмотра обновлений, и он работает отлично.Пожалуйста помоги.

class EventCreateView(LoginRequiredMixin, CreateView):
    model = Event
    fields = ['name', 'event_attendees']

    def form_valid(self, form):
        form.instance.creator = self.request.user
        return super().form_valid(form)

Модель

name = models.CharField(max_length=100)
date = models.DateTimeField(default=timezone.now)
location = models.CharField(max_length=16, choices=EVENT_VENUES, default='sec-1, noida')
event_attendees = models.FileField(upload_to='documents/', default='')
creator = models.ForeignKey(User, on_delete=models.CASCADE)
form_rollout_time = models.DateTimeField(default=timezone.now)

def __str__(self):
    return self.name

def get_absolute_url(self):
    return reverse('event-detail', kwargs={'pk': self.pk})

Шаблон HTML

{% extends "events/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">New Event</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Post</button>
            </div>
        </form>
    </div>
{% endblock content %}

URL

urlpatterns = [
    path('', EventListView.as_view(), name='event-home'),
    path('user/<str:username>', UserEventListView.as_view(), name='user-events'),
    path('event/<int:pk>/', EventDetailView.as_view(), name='event-detail'),
    path('event/new/', EventCreateView.as_view(), name='event-create'),
    path('event/<int:pk>/update/', EventUpdateView.as_view(), name='event-update'),
    path('event/<int:pk>/delete/', EventDeleteView.as_view(), name='event-delete')
]

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Решена проблема путем переопределения метода form_invalid ().Очевидно, проблема заключалась в реализации с FileField, но была подавлена ​​реализацией form_invalid по умолчанию.При переопределении метода возникла актуальная проблема.

0 голосов
/ 04 декабря 2018

такой код обновления

def form_valid(self, form):
    obj = form.save(commit=False)
    obj.creator = self.request.user
    obj.save()

попробуйте

...