2012-03-21 20 views
0
class Answer(models.Model): 
    u_id=models.ForeignKey(User)            
    e_id=models.ForeignKey(Event)            
    c_desc=models.TextField(verbose_name="Candidate Description")    
    c_vote_count=models.IntegerField(default=0,verbose_name="Candidate vote count")  
    c_logo=models.ImageField(upload_to="candidateimages",null=True,blank=True)  
    class Meta: 
     verbose_name="Candidate" 
     verbose_name_plural = "Candidates" 
     unique_together=("e_id","u_id") 

class UserRequestPool(models.Model): 
    u_id=models.ForeignKey(User) 
    e_id=models.ForeignKey(Event) 
    u_allowed=models.BooleanField(default=False,verbose_name="User allowed") 
    rq_date=models.DateField(auto_now_add=True,verbose_name="Request Date") 
    request_list = (('V', 'Voter'), ('C','Candidate')) 
    rq_type=models.CharField(max_length=1,choices=request_list,verbose_name="Request Type") 

     class Meta: 
     unique_together=("e_id","u_id","rq_date","rq_type") 

我想通过给定的数据下面的SQL查询选择自定义列表过滤相关数据

从SecureVirtualElection_answer,SecureVirtualElection_userrequestpool 其中SecureVirtualElection_userrequestpool.u_id_id = SecureVirtualElection_answer.u_id_id 和SecureVirtualElection_userrequestpool选择SecureVirtualElection_answer.u_id_id,SecureVirtualElection_answer.e_id_id。 e_id_id = SecureVirtualElection_answer.e_id_id 和rq_type ='C'AND u_allowed = 0;

我一直在试图写在Django管理 类AnswerListFilter(SimpleListFilter)相同: 标题= _( '批准')

parameter_name = 'select' 

    def lookups(self, request, model_admin): 
     return (
      ('yes', _('yes')), 
      ('no', _('no')), 
     ) 

    def queryset(self, request, q): 
     print "hello" 
     if self.value() == 'yes': 
      print "yes" 
      return Answer.objects.raw('select SecureVirtualElection_answer.u_id_id,SecureVirtualElection_answer.e_id_id from SecureVirtualElection_answer,SecureVirtualElection_userrequestpool where SecureVirtualElection_userrequestpool.u_id_id=SecureVirtualElection_answer.u_id_id and SecureVirtualElection_userrequestpool.e_id_id=SecureVirtualElection_answer.e_id_id and rq_type=\'C\' AND u_allowed=1') 

     if self.value() == 'no': 
      return Answer.objects.raw('select SecureVirtualElection_answer.u_id_id,SecureVirtualElection_answer.e_id_id from SecureVirtualElection_answer,SecureVirtualElection_userrequestpool where SecureVirtualElection_userrequestpool.u_id_id=SecureVirtualElection_answer.u_id_id and SecureVirtualElection_userrequestpool.e_id_id=SecureVirtualElection_answer.e_id_id and rq_type=\'C\' AND u_allowed=0') 
     print "control should not reach here" 
+0

如果你阐述了更多的可能是有益的详细信息,特别是为什么你没有发现任何有用的文档在https://docs.djangoproject.com/en/1.3/ref/models/querysets/ – che 2012-03-21 06:10:47

+0

我不能在django中重写上述sql查询 – user1003121 2012-03-21 06:24:44

回答

0

result = UserRequestPool.objects.filter(rq_type='C',u_allowed=False)