gpt4 book ai didi

python - DjangoForeignKey中的表单控件

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:47 27 4
gpt4 key购买 nike

我的模型:

class Faculty(models.Model):
name = models.CharField(max_length=30)


class Program(models.Model):
name = models.CharField(max_length=30)
faculty = models.ForeignKey(Faculty)


class Student(models.Model):
name = models.CharField(max_length=30)
faculty = models.ForeignKey(Faculty)
program = models.ForeignKey(Program)

让我有两个教授:

  • 科学
  • 管理

每个程序都有 3 个程序:

  • 科学
    • B.电脑
    • B.软件
    • B.民用
  • 管理
    • 工商管理学士
    • 论坛
    • BBI

我想要的是当学生填写表格时他们可以选择学院和类(class)。因此,当用户选择科学作为学院时。那么如何让 django 只提供来自所选教师的程序呢?这意味着当用户在“Faculty Field”中选择“Science”时,那么在“program field”中应该显示“Computer”、“Software”和“Civil”。

这可能吗?那怎么办?我想我提出了一个明确的问题。 (很容易理解我的意思)

更新:-按照@thamem的要求

表单.py

class StudentForm(forms.ModelForm):
class Meta:
model = Student
fields = {'name','faculty','program','roll','gender','contact','address','about',}

模板:

<div class="contener">
<form method="post" enctype="multipart/form-data">{% csrf_token %}
{{form.as_p}}

<input type="submit" value="Save">
</form>
</div>

url.py

urlpatterns = [
url(r'^addprofile/$', addprofile, name='addprofile'),
]

最佳答案

你可以使用ajax来完成

将此代码放入您的模板中

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>

$(document).ready(function(){

$("select[name='faculty']").change(function(){
var value = $(this).val();
var pselect = $("select[name='program']");

$.ajax({
method:"get",
dataType:"json",
url:'{% url 'profile:suggest_program' %}',
data:{
'faculty':value
},
success:function(data){
pselect.empty();
$.each(data, function(index, value){
pselect.append("<option value='"+value.pk+"'>"+value.name+"</option>");
});
},

});
});

});
</script>

在你的views.py中

from django.http import JsonResponse


def suggest_program(request):
faculty = request.GET.get("faculty")
programs = [{"data":"nothing found"}]
if faculty:
programs = Program.objects.filter(faculty_id=faculty
).values("pk", "name")
programs = list(programs)
return JsonResponse(programs, safe=False)

url.py

url(r'^suggest-program/$', views.suggest_program, name="suggest_program"),

关于python - DjangoForeignKey中的表单控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43478355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com