Почему данные в Django Framework не хранятся в базе данных, в то время как я сделал со всеми миграциями? - PullRequest
0 голосов
/ 31 марта 2019

Я изучаю Django. Я сделал все, что было объяснено в javatpoint (обучающий сайт), я сделал все миграции, я выполнил python manage.pymigrate, makemigrations, sqlmigrate appname 0001_initial все, форма создана успешно, но формазагрузка данных не сохраняется в базе данных.я просто хочу, чтобы данные (имя и фамилия) сохранялись в таблице сотрудников, а данные загружались в виде файла csv.

views.py
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
from django.shortcuts import render, redirect
from name.forms import EmployeeForm
from name.models import Employee
import csv



def index(request):
    if request.method == "POST":
        form = EmployeeForm(request.POST)
        if form.is_valid():
            try:
                return redirect('/')
            except:
                pass
    else:
        form = EmployeeForm()
    return render(request,'index.html',{'form':form})

def getfile(request):
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="file.csv"'
    employees = Employee.objects.all()
    writer = csv.writer(response)
    for employee in employees:
        writer.writerow([employee.id,employee.first_name,employee.last_name])
    return response





 forms.py

    from django import forms
    from name.models import Employee


    class EmployeeForm(forms.ModelForm):
        class Meta:
            model = Employee
            fields = "__all__"





models.py

from __future__ import unicode_literals
from django.db import models
class Employee(models.Model):
    first_name = models.CharField(max_length=20)
    last_name = models.CharField(max_length=30)

    class Meta:
        db_table = "employee"




script.js
alert("Hello, Welcome to Javatpoint");







index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Index</title>
</head>
<body>
<form method="POST" class="post-form" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="save btn btn-default">Save</button>
</form>
</body>
</html>

style.css
h1{
color:red;
}







urls.py
from django.contrib import admin
from django.urls import path
from name import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
    path('csv',views.getfile)

]


 0001_initial.py(after migration)


    from django.db import migrations, models


    class Migration(migrations.Migration):

        initial = True

        dependencies = [
        ]

        operations = [
            migrations.CreateModel(
                name='Employee',
                fields=[
                    ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                    ('first_name', models.CharField(max_length=20)),
                    ('last_name', models.CharField(max_length=30)),
                ],
                options={
                    'db_table': 'employee',
                },
            ),
        ]

1 Ответ

0 голосов
/ 31 марта 2019

Django ModelForms имеет метод save для фактического вставки данных формы в базу данных.

Так что вам просто нужно изменить часть своего представления, чтобы включить этот оператор, следующим образом:

if request.method == "POST":
    form = EmployeeForm(request.POST)
    if form.is_valid():
        try:
            form.save()
            return redirect('/')
        except:
            pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...