当我在Django中通过管理页面发帖时,它没有显示

时间:2019-03-20 21:52:17

标签: django debugging blogs

有点像标题所说的...检查图片。当我尝试发布新帖子时,它说我成功了,但它不会显示在管理页面或detail.html中。

http://prntscr.com/n0pfrv

这是我的帖子模型代码

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse



class Post(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(help_text="A short label, generally used in URLs.",default='', max_length=100)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    class Meta:
        ordering = ['-date_posted']

    def save(self):
        slug = self.title

    def get_absolute_url(self):
        return reverse('detail', kwargs={'slug':self.slug})

    def __str__(self):
        return self.title

admin.py

from django.contrib import admin
from .models import Post

class PostAdmin(admin.ModelAdmin):
    list_display = ['title', 'slug', 'date_posted', 'author']
    list_filter = ['title', 'date_posted']
    prepopulated_fields = { 'slug': ('title',)}

admin.site.register(Post, PostAdmin)

名为Blog的应用程序中的 views.py是否也具有模型发布

from django.contrib import messages
from . models import Post
from django.core.mail import send_mail
from django.views.generic import DeleteView, ListView


def index_view(request):
    return render(request, 'blog/index_view.html')

def blog_view(request):
    context = {
        'posts': Post.objects.all()
    }
    return render(request, 'blog/blog_view.html', context)

class PostDetailView(DeleteView):
    model = Post
    template_name = 'blog/detail.html'
    context_object_name = 'post'

如果您需要我的其他任何代码,请将其发布

1 个答案:

答案 0 :(得分:1)

您实际上并没有使用save(self)方法保存数据:

def save(self):
    slug = self.title
    super(Post, self).save(*args, **kwargs)

您应按文档中所述调用真正的save方法:

Overriding predefined model methods