【问题标题】:add row to database django将行添加到数据库 django
【发布时间】:2026-01-12 19:00:01
【问题描述】:

我有一个管理学生的项目 我可以读取或编辑我的数据库的行,但我不能添加新数据,我不知道.....一些帮助:(

html

<form action="/school_manager/students/add/" method="post">
        {% csrf_token %}
        <label for="add_first_name">First Name</label><br/>
        <input type="text" class="form-control" name="add_first_name" id="add_first_name" />
<input type="submit" class="btn btn-primary btn-lg" value="Add"/>

有一个带有简单文本字段的 html 表单可以添加“名字” 用于编辑数据库

这是我的 view.py 并为我编辑一行字段:

def update_student_detail(request, student_id):
    list = get_object_or_404 ( student, pk=student_id)
    if request.method == 'POST' :
        list.First_Name = request.POST.get('update_first_name')
    list.save()
    return HttpResponseRedirect('/school_manager/students/' + student_id)

现在,向数据库添加数据的方法是什么????

谢谢

【问题讨论】:

  • url(r'^students/add/$',views.add_student,name='添加学生') @shang-wang
  • 我建议创建一个表单来执行此操作。创建student 对您来说要容易得多,而无需花费时间编写前端表单和后端保存逻辑。看看 django 模型形式,它真的很简单。 docs.djangoproject.com/en/1.8/topics/forms/modelforms
  • 我看到了那个文档,但我什么都不懂@shang-wang
  • 您可以尝试 google django form examples 来帮助您更好地理解它。例如我搜索的第一个结果是:tutorial.djangogirls.org/en/django_forms/index.html

标签: python html django database


【解决方案1】:

如果想在创建新行之前检查现有行

你应该使用get_or_create()。它返回元组

例如:

created_obj = Something.objects.get_or_create(name='ABC',Address="XYZ")

【讨论】:

  • 所以,此代码检查现有元组,如果新元组不存在,则创建它???? @mushahid-khan
  • 是的!如果找到一个对象,get_or_create() 将返回该对象的元组和 False。如果找不到对象,get_or_create() 将实例化并保存一个新对象,返回一个新对象和 True 的元组。
  • 谢谢你……我用python表单解决了我的问题@mushahid-khan
【解决方案2】:

试试这个:

new_student = student(First_Name = request.POST.get('add_first_name'))
new_student.save()

【讨论】:

  • 我认为这是真的,我没有 first_name 的错误了....等待其他字段完成
  • 这段代码有效....但是清除旧行并添加新行....我想在保留旧行的同时添加新行