2017-03-23 9 views
0

私は最初から好きなボタンを作成したアプリを持っています。私のモデルは、私のビューファイルで多くの人に引き寄せています。私は、私のHTMLに投稿されたような回数を投稿するためにカウンタを取得する必要があります。しかし、私はエラーが発生しているので、私はコードの行を知っている好きなボタンdjangoのカウンター

counter=Mysecret.objects.annotate(var=Count('creator')).order_by('created_at') is my issue. Need somone to ell me a better way to code it so it displays on my home page. 

    Traceback: 

    File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\exception.py" in inner 
     42.    response = get_response(request) 

    File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\base.py" in _get_response 
     187.     response = self.process_exception_by_middleware(e, request) 

    File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\djangoENv\lib\site-packages\django\core\handlers\base.py" in _get_response 
     185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

    File "C:\Users\dbhol\Desktop\DojoAssignments\Python\myenvirnoments\django2\dojosecrets\dojosecrets\apps\secretdojo\views.py" in index 
     9. counter=Mysecret.objects.annotate(var=Count('creator')).order_by('created_at') 

    Exception Type: NameError at /secretdojo/ 
    Exception Value: global name 'Count' is not defined 


Html index 

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <h1>Hello {{ request.session.user_fname }}!</h1> 




    <form class="" action= method="post" > 
      {% csrf_token %} 
     <input type="submit" name="Logout" value="Logout"> 
    </form> 




     <h2>Your Secret Here</h2> 
     <form action="{% url 'secretdojo:addsecret' %}" name="secret1" method="post"> 
       {% csrf_token %} 
      <textarea name="message" rows="8" cols="80"></textarea> 
      <input type="submit" name="submit" value="post"> 
     </form> 








     <h3>Most Popular Secrets</h3> 
     <form class="" action="{% url 'secretdojo:index' %}" name="" method="post"> 
      {% csrf_token %} 
     <input type="submit" name="Logout" value="Secret"> 
     </form> 



      <h3>Recent Secrets</h3> 


       <table class="table"> 
       <tr> 
        <th>Id user</th> 
        <th>Id message</th> 
        <th>Course Name</th> 
        <th>Date Added</th> 
        <th>Action</th> 
       </tr> 
       {% for dog in secret %} 
       <tr> 

        <td>{{ dog.secret }}</td> 

        {% for dog in counter %} 
        {{dog.var}} 
        {% endfor %} 
        <td>{{ dog.created_at }}</td> 
        {% if dog.creator.id == request.session.user_id %} 
        <td><form action="{% url 'secretdojo:remove' id=dog.id %}">{% csrf_token %}<input class="btn btn-default" type="submit" value="Remove"></form></td> 

        <td><form action="{% url 'secretdojo:like' id=dog.id %}">{% csrf_token %}<input class="btn btn-default" type="submit" value="Like"></form></td> 
         {% endif %} 
         {% endfor %} 
       </tr> 

      </table> 

      Have secretes all list here Have date and time and a like button if like button click increase count on post. Look into counter per post 

      Add delete function to page 

      need table for post in table need spot for secrets. Need spot for like count date time 





     </div> 
</html> 

    views.py 

    from django.shortcuts import render, redirect 
    from . models import Mysecret 
    from ..logReg.models import User 


    # Create your views here. 

    def index(request): 
     counter=Mysecret.objects.annotate(var=Count('creator')).order_by('created_at') 
     context = { 
     "counter" : counter, 
     "secret": Mysecret.objects.all(), 


     } 

     return render(request, 'secretdojo/index.html', context) 


    def create(request): 
     secreteid= User.objects.get(id=request.session['user_id']) 

     Mysecret.objects.create(secret=request.POST['message'], creator=secreteid) 

     return redirect('secretdojo:index') 

    def removesecret(request, id): 

     mainid = Mysecret.objects.get(id=id) 
     userid =User.objects.get(id=request.session['user_id']) 

     if mainid.creator != userid: 
      return False 
     mainid.delete() 

     return redirect('secretdojo:index') 

    def like(request, id): 

     secreteid= User.objects.get(id=request.session['user_id']) 
     mainid = Mysecret.objects.get(id=id) 
     mainid.loguser.add(secreteid) 

     return redirect('secretdojo:index') 

    def topsecret(request): 
     context = { 


     } 

     return redirect('/') 


    manage.py 


    from __future__ import unicode_literals 
    from django.db import models 
    from ..logReg.models import User 

    class Mysecret(models.Model): 
     secret = models.CharField(max_length =500) 
     created_at = models.DateTimeField(auto_now_add = True) 
     updated_at = models.DateTimeField(auto_now = True) 
     loguser = models.ManyToManyField(User, related_name='loguser') 
     creator = models.ForeignKey(User, related_name='creator') 

答えて

0

ビューのトップにインポートされたカウント。問題だった。

関連する問題