Django: данные не передаются в базу данных, но нет ошибок - PullRequest
0 голосов
/ 16 февраля 2020

Я создаю приложение Django для списка дел. Я использую bootstrap модальный с Json для вставки в базу данных. Тем не менее, когда я нажимаю кнопку отправки, он говорит, что данные были отправлены в базу данных, но когда я проверяю базу данных, там ничего нет.

urls.py:

urlpatterns = [
    path('', TaskListView.as_view(), name='task_list'),
    re_path(r'^create/$', views.task_create, name='task_create'),
]

views.py:

@login_required
def task_create(request):
    data = dict()
#, data=request.POST
    if request.method == 'POST':
        form = TaskForm(request.user, data=request.POST)
        if form.is_valid():
            form.save(commit=False)
            data['form_is_valid'] = True
        else:
            data['form_is_valid'] = False
    else:
        form = TaskForm(request.user)

    context = {'form': form}
    data['html_form'] = render_to_string('partial_task_create.html',
        context,
        request=request
    )
    return JsonResponse(data)

JavaScript:

$("#modal-task").on("submit", ".js-task-create-form", function () {
    var form = $(this);
    // {% url 'task_create' %} ................. 
    $.ajax({
      url: form.attr("action"),
      data: form.serialize(),
      type: form.attr("method"),
      dataType: 'json',
      success: function (data) {
        if (data.form_is_valid) {
          alert("Task created!");  // <-- This is just a placeholder for now for testing
        }
        else {
          $("#modal-task .modal-content").html(data.html_form);
        }
      }
    });
    return false;
  });

раздел основного шаблон:

<div class="modal fade" id="modal-task">
    <div class="modal-dialog">
        <div class="modal-content">
        </div>
    </div>
</div>  

частичный шаблон для модального вида:

{% load widget_tweaks %}
<form method="post" action="{% url 'task_create' %}"  class="js-task-create-form" novalidate>
  {% csrf_token %}
  <div class="modal-header">
    <h4 class="modal-title" style="margin-left:90px;">Create a new Task</h4>
    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
      <span aria-hidden="true">&times;</span>
    </button>    
  </div>
  <div class="modal-body">
    {% for field in form %}
      {% if field.id_for_label == "id_is_completed" %}
        <div class="form-check{% if field.errors %} has-error{% endif %}">
          <label class="form-check-label">          
            {% render_field field class="form-check-input" %} {{ field.label }}        
          </label>        

          {% for error in field.errors %}
            <p class="help-block">{{ error }}</p>
          {% endfor %}
        </div>
        <br />
      {% else %}
        <div class="form-group{% if field.errors %} has-error{% endif %}">
          <label for="{{ field.id_for_label }}">{{ field.label }}</label>

          {% render_field field class="form-control" %}

          {% for error in field.errors %}
            <p class="help-block">{{ error }}</p>
          {% endfor %}
        </div>   
      {% endif %}    
    {% endfor %}
  </div>
  <div class="modal-footer">
    <button type="submit" class="btn btn-primary">Create Task</button>
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>    
  </div>
</form>

models.py: (импорт удален)

class TaskForm(ModelForm):

    parent = forms.ModelChoiceField(queryset=Task.objects.all(), empty_label="---None---", required=False)


    class Meta:
        model = Task
        fields = ['task_title', 'task_description', 'is_completed', 'categories', 'parent']   


    def __init__(self, user, *args, **kwargs):        
        super(TaskForm, self).__init__(*args, **kwargs)
        self.fields['categories'].queryset = Categories.objects.filter(Q(user_id__isnull=True) | Q(user_id=user.id))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...