【问题标题】:Django - Generate Edit form based on selected drop down optionDjango - 根据选定的下拉选项生成编辑表单
【发布时间】:2019-12-18 02:25:32
【问题描述】:

我最近开始学习 Django,并尝试根据从下拉列表中选择的值构建一个简单的编辑表单。此下拉列表由学生模型的后端数据库列“student_first_name”填充。 When a particular student_first_name is selected and submitted, an edit form with all the details of the student should be generated in the same template for editing purpose.在那,只有 student_id 字段应该是只读的。我能够生成下拉列表并在 selected_item 变量中获取“student_id”值。但我无法理解如何使用它来生成编辑表单。还有其他更好的方法来实现这一点吗?这是我的代码初稿,如果有任何建议,我们将不胜感激。

models.py

class Students(models.Model):
    student_id = models.IntegerField(primary_key=True)
    student_first_name = models.CharField(max_length=100, null=True)
    student_last_name = models.CharField(max_length=100, null=True)
    student_address = models.CharField(max_length=255, null=True)
    student_dob = models.DateTimeField(null=True)
    student_doa = models.DateTimeField(null=True)

views.py

def student_edit(request):
    details = Students.objects.all()
    form = request.POST
    if request.method == 'POST':
        selected_item = get_object_or_404(Students, pk=request.POST.get('student_id')).student_id
    return render(request, 'student_edit.html', {'details': details})

student_edit.html

<form method="POST" novalidate>
{% csrf_token %}
<select name="student_id" class="form-control">
    <option value="">Select Student Name</option>
    {% for detail in details %}
        <option value="{{ detail.student_id }}">{{ detail.student_first_name }}</option>
    {% endfor %}
</select>
<button type="submit" class="btn btn-success">Select</button>
</form>

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    我不知道您是否已经找到答案,但这个link 是我迄今为止找到的最佳解决方案。此外,这个webpage 也可能对您有所帮助。简而言之,您需要 AJAX 才能做类似的事情。如果要禁用字段,请在 forms.py 中写入以下内容:self.fields['student_id'].disabled = True

    【讨论】:

      猜你喜欢
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多