0

問題の可能な解決策を返すクエリリストがあります。リストは、私が期待している結果を返します。クエリリストの各項目に対応するチェックボックス フォームを追加しようとしています。あまり派手ではありません。チェックボックスをオンにしてモデルを更新するだけです。私は2つのモデルを持っています:

149 class TaskSolution(models.Model):                                                                                                           
150     solution          = models.TextField()                                                                                                  
151     submitter         = models.ForeignKey(User, null=True, blank=True)                                                                       
152     relatedtask       = models.ForeignKey(Task, null=True, blank=True)                                                                      
153     solutionnumber    = models.IntegerField(editable=False)                                                                                 
154     date_created      = models.DateTimeField(editable=False)                                                                                 
155     date_updated      = models.DateTimeField(editable=False)                                                                                
156     confimed_solution = models.BooleanField()                                                                                               
157     objects           = SolutionVoteManager()

160     def save(self, *args, **kwargs):                                                                                                        
161         if not self.id:                                                                                                                     
162             self.date_created = datetime.now()                                                                                              
163         self.date_updated = datetime.now()                                                                                                  
164         super(TaskSolution, self).save(*args, **kwargs)                                                                                     

166     def __unicode__(self):                                                                                                                  
167         return self.id                                                                                                                      

169     def __unicode__(self):                                                                                                                  
170         return "%s" % self.object_pk                                                                                                        

172     def __unicode__(self):                                                                                                                  
173         return self.solution  


184 class MarkedSolved(models.Model):                                                                                                           
185     is_solution      = models.BooleanField(verbose_name='')                                                                                 
186     related_idea     = models.ForeignKey(Idea, editable=False)                                                                              
187     related_task     = models.ForeignKey(Task, editable=False)                                                                              
188     related_solution = models.IntegerField(editable=False)                                                                                  
189     date_updated     = models.DateTimeField(editable=False)                                                                                 

191     def save(self, *args, **kwargs):                                                                                                        
192         self.date_updated = datetime.now()                                                                                                  
193         super(MarkedSolved, self).save(*args, **kwargs)                                                                                     

195     def __unicode__(self):                                                                                                                  
196         return self.id                                                                                                                      

198     def __unicode__(self):                                                                                                                  
199         return "%s" % self.object_pk                                                                                                        

201     def __unicode__(self):                                                                                                                  
202         return "%s" % self.is_solution

204 class MarkedSolved(ModelForm):                                                                                                          
205     class Meta:                                                                                                                             
206         model = MarkedSolved      

私のビューには、次のクエリセットがあります。

solution_list = TaskSolution.objects.filter(relatedtask__id=task_id) 

期待どおりにソリューションを返すので、これは問題ありません。私が今抱えている問題は、MarkSolved フォームの初期値を solution_list 値と関連付けたいということです。

 393 if request.method == 'POST':                                                                                                                                                                                                                              
 394         mark_solved_form = PostMarkedSolved(data=request.POST, instance=solution_task)

基本的に、次のようなクエリを探しています。

select * from markedsolved a, tasksolution b where a.related_solution=b.solutionnumber and a.related_solution=1 and b.solutionnumber=1 and a.related_task_id = 5 and b.relatedtask_id=5;

クエリセット内の 2 つのモデルのすべての値が一致する場所。そのクエリは、私が望む正確な結果を返しますが、solution_list の結果に基づいて初期値を入力するのに途方に暮れています。

4

1 に答える 1

2

モデル MarkedSolved には TaskSolution モデルに関連するフィールドが必要だと思います

交換する

related_solution = models.IntegerField(editable=False)

related_solution = models.ForeignKeyField(TaskSolution)

テンパルテ

   {% for item in solved_list%}
        <input type = "checkbox" name="{{item.id}}" > {{item.solution}}
   {% endfor %}

ビュー

 if request.method == 'POST':
      for soln in solutions_list: 
         solution_id = request.POST.get(str(soln.id))    
         if solution_id:
            MarkedSolved.objects.create(
             is_solution = True,
             related_task = Task.objects.get(id=task_id),
             related_solution = soln
            )

上記のコードをテストしていませんが、これでアイデアが得られます

于 2012-11-05T08:11:43.840 に答える