django - 'Post' 对象在 django Photo Blog App 中没有属性 'get_content_type'
问题描述
我真的很迷茫,并试图解决这个问题几个小时。我正在为摄影师开发这个社交媒体,他们可以在其中评论彼此的照片。我设置了评论表单,但我收到 AttributeError : 'Post' object has no attribute 'get_content_type' 这是我的 Views.py - photo_detail,错误在哪里:
def photo_detail(request, id):
instance = get_object_or_404(Post, id=id)
comments = Socialmedia.objects.filter_by_instance(instance)
initial_data = {
"content_type": instance.get_content_type,
"object_id": instance.id
}
socialmedia_form = SocialmediaForm(
request.POST or None, initial=initial_data)
if socialmedia_form.is_valid():
print(socialmedia_form.cleaned_data)
context = {
"title": instance.title,
"photo": instance.photo,
"instance": instance,
"comments": comments,
"socialmedia_form": socialmedia_form,
}
return render(request, "photo_detail.html", context)
当我注释掉行"content_type": instance.get_content_type,时,错误消失了,但是在写完评论之后,它的说字段是必需的并且没有发布任何东西,所以它不会从评论中加载数据。这是我的 models.py :
from django.db import models
from django.urls import reverse
from django.contrib.auth.models import User
from socialmedia.models import Socialmedia, SocialmediaManager
from django.contrib.contenttypes.models import ContentType
def upload_location(instance, filename):
return '%s/%s' % (instance.id, filename)
class Post(models.Model):
# category = models.ForeignKey(Type, blank=True, null=True, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
title = models.CharField(max_length=200)
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
time = models.DateTimeField(auto_now=False, auto_now_add=True)
photo = models.ImageField(upload_to=upload_location,
null=True, blank=True,
height_field="height_field",
width_field="width_field")
height_field = models.IntegerField(default=0)
width_field = models.IntegerField(default=0)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("photo_detail", kwargs={"id": self.id})
@property
def get_content_type(self):
instance = self
content_type = ContentType.objects.get_for_model(instance.__class__)
return content_type
最后一页 photo_detail.html,我正在尝试实现它。
{% extends "base.html" %}
{% block content%}
<div class="col-sm-8 col-sm-offset-6">
{% if instance.photo %}
<img src="{{ instance.photo.url }}" class="img-responsive"/>
{% endif %}
<h1>{{ title }} </h1>
<p>Author: {{ instance.user}}</p>
<p><div class="fb-like" data-href="https://developers.facebook.com/docs/plugins/" data-width="" data-layout="button" data-action="like" data-size="small" data-share="true"></div></p>
<br>
<p>Updated : {{ instance.updated }}<br/></p>
<p> Created :{{ instance.time }}<br/></p>
<div>
{{instance.comments.all}}
<p class="lead">Comments</p>
<form method="POST" action="."> {% csrf_token %}
{{ socialmedia_form}}
<input type="submit" value="Post" class="btn btn-default">
</form>
{% for comment in comments %}
<div class="">
{{ comment.content }}
{{comment.user}} {{comment.time | timesince }} ago
</div>
{% endfor %}
</div>
</div>
{% endblock %}
解决方案
推荐阅读
- typescript - 为什么将类型改装到无类型的东西上需要一个新的 npm 包?
- javascript - 基于给定数组减少 javascript 对象中的键值对
- ios - 通过 PHPickerViewController 推送视图控制器
- php - 从核心数据属性中读取日期
- c++ - 如何获得 std::bind 函数签名?
- android - 使用 AWS Lambda 连接 Android 和 AWS SageMaker
- node.js - 在 nodeJs 退出代码 1 中生成 mongodump 集群
- php - 联系表格提交失败?
- javascript - Javascript 以编程方式更改列表项的图像 url 属性
- wordpress - 需要在 WordPress 代码中删除 Foreach 循环中的重复帖子