我的应用程序允许您喜欢图片,然后将您重定向到同一页面
当我尝试想要一张图片时我得到错误我可以用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'))
我的URLconf:
url(
我模特的部分内容: R '^象/(θP \ d +)/ $', 'pet.views.Like', name ='喜欢' ) 我的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/>
我的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)
答案 0 :(得分:11)
您的视图函数名称定义为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
答案 1 :(得分:1)
模型名称和视图名称不应相同。
答案 2 :(得分:0)
我在做
时遇到了同样的错误 from django.contrib.auth import get_user_model
User = get_user_model
adds()解决了错误:
from django.contrib.auth import get_user_model
User = get_user_model()
答案 3 :(得分:0)
函数名称和模型名称确实取决于名称,函数名称应与我们在urls.py中定义的url名称相同。py模型名称取决于函数数据成员,例如当我们从用户那里获取数据并保存在其中时数据库,然后从其模型名称ex = u_data = registration()调用该对象,此对象用于用户数据服务,并定义在其中发送数据以保存目标网址及其相关视图中的乐趣。
答案 4 :(得分:0)
这是因为你在view.py中的函数名和models.py中的模型名是一样的。 您可以更改函数名称或模型名称。
另一种解决方案是:
from .models import modelname as modelname2
def modelname(request):
obj_list_ads = modelname2.objects.all()
在这段代码中,函数名是modelname。
答案 5 :(得分:-1)
定义对象:
objects = models.Manager()
您的错误将解决!