Veljko Kukic
Veljko Kukic

Reputation: 137

When i make post via admin page in Django it doesnt show up

Literaly like title say...check the picture. When i try to make new Post it says i made it but it wont show up on admin page nor in detail.html.

http://prntscr.com/n0pfrv

here is my code for post model

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)

views.py in app called blog were i have model Post also

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'

If you need any other of my code im gonna post it

Upvotes: 0

Views: 51

Answers (1)

Navid Zarepak
Navid Zarepak

Reputation: 4208

You don't actually save the data in your save(self) method:

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

You should call the real save method as mentioned in the docs:

Overriding predefined model methods

Upvotes: 1

Related Questions