как сэкономить на базе данных - PullRequest
0 голосов
/ 04 сентября 2018

Джанго

code views.py:

from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from home.models import Post

@csrf_exempt
def home(request):
    context = {'request_method': request.method}
    if request.method == 'POST':
        context['request_payload'] = request.POST.dict()
        post_data = dict(request.POST)
        print(post_data) 
        for key, value in post_data.items():
            for subvalue in value:
                print(key, subvalue)
                if key == 'name':
                    m = Post.name(subvalue)
                    m.save()

                if key == 'description':
                    print(subvalue)
                    p = Post.description(subvalue)
                    p.save()

    if request.method == 'GET':
        context['request_payload'] = request.GET.dict()
    return HttpResponse()

код models.py

from django.db import models

class Post(models.Model):
    name = models.CharField(max_length=150)
    description = models.CharField(max_length=150)

Результат print(post_data) {'name': ['luca', 'jeams'], 'description': ['all', 'all2']}. Значение извлечения результата в print(key, value):

name Luca
name jeams
description all
description all2

Я хотел бы сохранить эти данные в базе данных, но они не работают. Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

замените ваш код для метода записи, как показано ниже:

if request.method == 'POST':
for ind, obj in enumerate(request.POST.getlist('name')):
    desc = request.POST.getlist('description')[ind]
    Post.object.create(name=obj, description=desc)

Это будет работать для вас

0 голосов
/ 04 сентября 2018

Сначала посмотрите на doc . Используйте getlist, чтобы получить список значений с тем же именем. Затем переберите их и сохраните данные в своей таблице.

from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from home.models import Post

@csrf_exempt
def home(request):
    context = {'request_method': request.method}
    if request.method == 'POST':
        context['request_payload'] = request.POST.dict()

        names = request.POST.getlist('name')
        descriptions = request.POST.getlist('description')

        for i in range(len(names)):
            post = Post.objects.create(name=names[i], description=descriptions[i])

    if request.method == 'GET':
        context['request_payload'] = request.GET.dict()
    return render(request, 'your_template_name_here', context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...