15

My apps allow you to like a picture then it redirects you to the same page

I get then error when I try to like a picture I can create a like objects with the shell prompt but why I get this error? thank for helping me

AttributeError at /like/3/
function' object has no attribute 'objects'Request Method: GET 
Request URL: http://127.0.0.1:8000/like/3/ 

Exception Value: 'function' object has no attribute 'objects' 
Traceback:
File "C:\Python26\Lib\site-packages\django\core\handlers\base.py" in get_response
111.                         response = callback(request, *callback_args, **callback_kwargs)
File "C:\o\mysite\pet\views.py" in Like
195.     new_like, created = Like.objects.get_or_create(user=request.user, picture_id=picture_id)

This is parts of my views.py

def Like(request,picture_id):
    pid = picture_id
    new_like, created = Like.objects.get_or_create(user=request.user, picture_id=picture_id)
    p = Picture.objects.get(pk=pid)
    if created:
        HttpResponseRedirect(reverse('world:url_name'))
    else:
        HttpResponseRedirect(reverse('world:url_name'))

My URLconf:

     url(

Parts of my model: r'^like/(?P\d+)/$', 'pet.views.Like', name = 'Like' ), My boat.html

 {% if picture %}
 <ul>
    {% for pet in picture %}
    <li><b>description</b> = {{ pet.description}}<br/>
        {% if pet.image %}
 <li>
    <a href ="{% url world:Like pet.id %}">
        <img src= "{{ pet.image.url }}" style="cursor:pointer">
    </a>
 <li>
        {% endif %}
 {% endfor %}
 </ul>
 {% endif %}
 <a href="{% url world:PictureCreator %}">Add Pictures to your board</a><br/>

My models.py

class Picture(models.Model):
    user = models.ForeignKey(User)
    board = models.ForeignKey(Board,blank=False,null=False)
    image = models.FileField(upload_to="images/",blank=True)
    description = models.TextField()
    is_primary = models.BooleanField(default=False)
    def __unicode__(self):
        return self.description

class Like(models.Model):
    user = models.ForeignKey(User)
    picture = models.ForeignKey(Picture)
    created = models.DateTimeField(auto_now_add=True)    
1
  • This message appeared to me because I put a @api_view() decorator on top of a user model (don't me ask how!). After removing it, everything worked properly again. Commented Jun 5, 2023 at 23:09

7 Answers 7

28

your view function name is defined as Like and your model is named Like

you define Like as a function so when you go to access Like.objects python does not see your model Like but the function Like

you could rename your view function

url(r'^like/(?P\d+)/$', 'pet.views.change_name_no_conflict', name = 'Like' )


def change_name_no_conflict(request,picture_id):
  pass
Sign up to request clarification or add additional context in comments.

Comments

7

Model name and view name shouldn't be same.

Comments

1

This is because your function name in view.py and model name in models.py are the same. You can change the function name or model name.

Another solution is:

from .models import modelname as modelname2

def modelname(request):
    obj_list_ads = modelname2.objects.all()

in this code function name is modelname.

Comments

0

I got this same error when doing

 from django.contrib.auth import get_user_model
 User = get_user_model

adding () solved the error:

 from django.contrib.auth import get_user_model
 User = get_user_model()

Comments

0

function name and model name does depend on name, function name should be same as url name we define url in urls.py model name depend on function data member, its means as for example when we take data from user and save in database then we call that object from its model name ex= u_data = registration() ,this is used for user data seve and define that fun where we send data to save means target url and in its related view.

Comments

0

I hit this error because my view's query set looked like this:

class IngredientList(generics.ListAPIView):
  queryset = Ingredient.objects.all # This line is wrong
  serializer_class = IngredientSerializer

I fixed it by adding a set of parenthesis to the queryset line:

class IngredientList(generics.ListAPIView):
      queryset = Ingredient.objects.all() # Fixed
      serializer_class = IngredientSerializer

Comments

-1

Define object:

objects = models.Manager()

Your error will solve!

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.