【问题标题】:how to save on database如何保存在数据库中
【发布时间】:2019-02-09 06:31:42
【问题描述】:

姜戈

代码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()

代码模型.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

我想将此数据保存在数据库中,但它不起作用。我该怎么办?

【问题讨论】:

    标签: python django database python-3.x django-models


    【解决方案1】:

    将您的代码替换为 post 方法,如下所示:

    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)
    

    它会为你工作

    【讨论】:

      【解决方案2】:

      先看看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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多