【问题标题】:i got error, when i try to save object in django当我尝试在 django 中保存对象时出现错误
【发布时间】:2020-01-01 08:33:57
【问题描述】:

帮助我解决以下问题(我只是初学者,(即使我可能不会以正确的方式提出问题))。 我还需要为您提供什么。

students() 得到了一个意外的关键字参数“stu_name” 请求方法:POST 请求网址:http://127.0.0.1:8000/studentsenter code here Django 版本:2.2.5 异常类型:TypeError 异常值: 学生()有一个意外的关键字参数“stu_name” 异常位置:C:\Users\GAGAN\Desktop\tarkProject\myapp\views.py in students,第 18 行 Python 可执行文件:C:\Users\GAGAN\Anaconda3\envs\djangoenv\python.exe Python版本:3.7.5 蟒蛇路径: ['C:\Users\GAGAN\Desktop\tarkProject', 'C:\Users\GAGAN\Anaconda3\envs\djangoenv\python37.zip', 'C:\Users\GAGAN\Anaconda3\envs\djangoenv\DLLs', 'C:\Users\GAGAN\Anaconda3\envs\djangoenv\lib', 'C:\Users\GAGAN\Anaconda3\envs\djangoenv', 'C:\Users\GAGAN\Anaconda3\envs\djangoenv\lib\site-packages'] 服务器时间:2020 年 1 月 1 日星期三 06:23:38 +0000'''

views.py

from django.shortcuts import render
from .models import students

# Create your views here.
def home(request):
    return render (request, 'myapp/home.html')

def contact(request):
    return render (request, 'myapp/contact.html')

def students(request):
    if request.method == 'POST':

        name = request.POST.get('stu_name')
        father = request.POST.get('stu_father')
        mother = request.POST.get('stu_mother')
        cl = request.POST.get('stu_class')
        s = students(stu_name=name, stu_father=father, stu_mother=mother, stu_class=cl)
        s.save()
        return render (request, 'myapp/students.html')
    else:
        return render (request, 'myapp/students.html')

models.py

from django.db import models

# Create your models here.

class contact(models.Model):
    stu_name = models.CharField(max_length=30)
    stu_father = models.CharField(max_length=30)
    stu_mother = models.CharField(max_length=30)
    # stuClass = models.CharField(max_length=30)


    def __str__(self):
        return self.stu_name


class students(models.Model):
    stu_name = models.CharField(max_length=30)
    stu_father = models.CharField(max_length=30)
    stu_mother = models.CharField(max_length=30)
    stu_class = models.CharField(max_length=10)

def __str__(self):
        return self.stu_name

【问题讨论】:

  • 你有一个名为students的函数和模型。您应该按照约定命名您的模型:Student(单数,首字母大写)以防止出现此类问题。
  • 先生如您所说将学生改为学生,但问题未解决
  • 您是否运行过 makemigrations 然后进行迁移?
  • 是的先生,我已经从迁移文件夹中删除了 dbsqlite 和 001 002 并完成了 makemigrations 并再次迁移。但是“Student() 得到了一个意外的关键字参数‘stu_name’”的问题
  • 先生问题已解决。根据您的建议,我更改了班级名称。但我也错误地更改了函数名称。现在保持函数名和类名学生不同,我解决了这个问题。非常感谢先生。

标签: python django


【解决方案1】:

这里students(stu_name=name, stu_father=father, stu_mother=mother, stu_class=cl) 正在调用您的函数,而不是实例化模型。因为,您的功能和型号名称是相同的。

解决方案:

  1. 为保持命名约定,请将型号名称 students 更改为 Student
  2. 运行python manage.py makemgirations
  3. 运行python manage.py migrate

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 2021-01-26
    • 2016-04-03
    相关资源
    最近更新 更多