2017-08-14 50 views
0

我試圖根據表單中選定的字段篩選數據。我創建了一個模型,並將其導入到的forms.py如何根據Django中的表單中的字段篩選模型表單中的數據

from django import forms 
from django.forms import ModelForm 
from .models import Student_Detail, Student_Education 
class StudentDetailForm(forms.ModelForm): 
    class Meta: 
     model = Student_Detail 
     fields = ['name', 'surname' , 'sex', 'birth_date', 'area', 
      'state' , 
      'city' , 'pincode'] 

     def to_python(self, value): 

      if not value: 
       return [] 
      return value.split(',') 

和我的模型

`

from __future__ import unicode_literals 
from django.db import models 

# Create your models here. 
class State(models.Model): 
    state = models.CharField(max_length=50) 
    slug = models.SlugField(unique=True, null=True, blank=True) 

    def __str__(self): 
     return self.state 


class City(models.Model): 
    state = models.ForeignKey('State', on_delete=models.CASCADE) 
    city = models.CharField(max_length=70) 
    slug = models.SlugField(unique=True, null=True, blank=True) 

    def __str__(self): 
     return self.city 


class Student_Detail(models.Model): 

    name = models.CharField(max_length=50) 
    surname = models.CharField(max_length=50, blank=True, null=True) 
    sex = models.CharField(max_length=4) 
    birth_date = models.DateTimeField() 
    area = models.CharField(max_length=100, blank=True, null=True) 
    state = models.ForeignKey('State', on_delete=models.CASCADE) 
    city = models.ForeignKey('City', on_delete=models.CASCADE) 
    pincode = models.IntegerField() 

    slug = models.SlugField(unique=True, null=True, blank=True) 

    def __str__(self): 
     return self.name + " " + self.surname` 

現在我想根據所選的狀態形式過濾城市同樣的形式。

我的看法是

from django.shortcuts import render 
from .models import City, Student_Detail, State, Student_Education 
from django.http import HttpResponseRedirect 
from .forms import StudentDetailForm, StudentEducationForm 


def get_student_data(request): 

    if request.method == 'POST': 
     form_detail = StudentDetailForm(request.POST) 

     if form_detail.is_valid(): 
      form_detail.save() 
      return HttpResponseRedirect('/home/') 

    else: 
     form_detail = StudentDetailForm() 

     return render(request,'home/form.html/', 
     {'form_detail':form_detail, }) 

def thanks(request): 
    template_name = 'home/thanks.html/' 

    return render(request, template_name, {}) 

我也在努力使用形式兩種不同的模式來輸入數據,但有些事情讓錯誤的,而在視圖層在兩種不同的模式保存數據。 請幫忙。

回答

1

訪問你的表單字段這樣myForm.fields['name']和過濾Student_Detail

from django.shortcuts import render 
from django.http import HttpResponse 

def student_view(request): 
    # your business logic or whatever goes here 
    if form.is_valid(): 
     students = Student_Detail.objects.filter(name=myForm.fields['name'], 
              surname=myForm.fields['surname']) 

    return render(request, 'student_view.html', {data=students}) 
相關問題