簡體   English   中英

Django 'function' 對象沒有屬性 'objects'

[英]Django 'function' object has no attribute 'objects'

我的應用程序允許您喜歡一張圖片,然后它將您重定向到同一頁面

當我嘗試喜歡圖片時出現錯誤,我可以使用 shell 提示創建類似的對象,但為什么會出現此錯誤? 謝謝你幫助我

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)

這是我的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'))

我的網址配置:

     url(

我的模型的一部分:r'^like/(?P\d+)/$', 'pet.views.Like', name = 'Like' ), Myboat.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/>

我的模型.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)    

您的視圖函數名稱被定義為Like並且您的模型被命名為Like

您將Like定義為一個函數,因此當您訪問Like.objects python 時不會看到您的模型Like但函數Like

你可以重命名你的視圖功能

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


def change_name_no_conflict(request,picture_id):
  pass

模型名稱和視圖名稱不應相同。

我在做的時候遇到了同樣的錯誤

 from django.contrib.auth import get_user_model
 User = get_user_model

添加()解決了錯誤:

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

函數名和模型名確實取決於名稱,函數名應該與url名稱相同我們在urls.py中定義的url模型名取決於函數數據成員,其含義例如當我們從用戶那里獲取數據並保存在數據庫中然后我們從其模型名稱 ex= u_data = registration() 調用該對象,這用於用戶數據 seve 並定義我們發送數據以保存的樂趣意味着目標 url 及其相關視圖。

這是因為你在 view.py 中的函數名和在 models.py 中的模型名是一樣的。 您可以更改功能名稱或型號名稱。

另一種解決方案是:

from .models import modelname as modelname2

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

在此代碼中,函數名稱是modelname

-->models.py

類客戶(模型。模型):

--> 視圖.py

定義客戶(請求):
--------

一定不一樣

我遇到了這個錯誤,因為我的視圖的查詢集看起來像這樣:

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

我通過向查詢集行添加一組括號來修復它:

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

定義對象:

objects = models.Manager()

你的錯誤會解決!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM