2014-06-17 94 views
0

我是django新手,我做了很多教程,通常我都是通過示例學習的。這是我的models.py文件。所以,我做了一個查詢集,但是如何製作一個視圖文件?如何爲查詢集創建視圖文件?

我需要views.py文件部分的querysets用於過濾數據。但我不知道跳躍在視圖中。

最簡單的方法是什麼?我需要爲它創建一個forms.py文件嗎?

所以,也許你知道該怎麼做?

from django.db import models 
import datetime 


class PeopleQuerySet(models.query.QuerySet): 
    def active(self): 
     return self.filter(active=True) 

    def get_sex(self, sex): 
     return self.filter(sex=sex) 

    def get_age(self, year1, year2): 
     return self.filter(year__range=(year1, year2)) 

    def get_city(self, city): 
     return self.filter(city=city) 

class PeopleManager(models.Manager): 

    def get_queryset(self): 
     return PeopleQuerySet(self.model, using=self._db) 

    def active(self): 
     return self.get_queryset().active() 

    def get_sex(self, sex): 
     return self.get_queryset().get_sex(sex) 


    def get_age(self): 
     return self.get_queryset.get_age(year1, year2) 

    def get_city(self): 
     return self.get_queryset().get_city(city) 


class People(models.Model): 

    SEX_CHOICES = (
    ('M', 'Vyras'), 
    ('F', 'Moteris'), 
    ) 

    CITY_CHOICES = (
    ('Kaunas', 'Kaunas'), 
    ('Klaipeda', 'Klaipeda'), 
    ('Vilnius', 'Vilnius'), 
    ) 


    YEAR_CHOICES = [] 
    for y in range(16, 100): 
     YEAR_CHOICES.append((y, y)) 


    name = models.CharField(max_length=111) 
    sex = models.CharField(max_length=1, choices=SEX_CHOICES) 
    year = models.IntegerField(('year'), max_length=4, choices=YEAR_CHOICES, default=16) 
    city = models.CharField(max_length=111, choices=CITY_CHOICES) 
    email = models.EmailField() 
    phone = models.CharField(max_length=11) 
    slug = models.SlugField() 
    active = models.BooleanField(default=True) 
    updated = models.DateTimeField(auto_now=True, auto_now_add=False) 

    objects = PeopleManager() 

    def __unicode__(self): 
     return self.name 
+0

你試過了什麼?並把你得到的錯誤。 – Ahsan

+0

我更新了問題。查詢集需要views.py部分。 – user3748281

回答

0

我想你需要像這樣的東西People.objects.filter(sex='Male')

在這裏檢查。

而且還here就是一個很好的例子,如:

Blog.objects.filter(entry__headline__contains='Lennon', 
    entry__pub_date__year=2008) 

並檢查了這stackoverflow question