title: First argument to get_object_or_404() must be a Model, Manager, or QuerySet, not 'unicode'
body: <p>I'm very new to django and I'm following some tutorial to learn it. From this tutorial I'm trying to build a blog but I'm stuck at this following error.</p>
  
  <pre><code>First argument to get_object_or_404() must be a Model, Manager, or QuerySet, not 'unicode'.
  Request Method: GET
  Request URL:    http://localhost:8000/blog/2018/10/16/todays_post/
  Django Version: 1.11.16
  Exception Type: ValueError
  Exception Value:First argument to get_object_or_404() must be a Model, Manager, or QuerySet, not 'unicode'.
  Exception Location: C:\Users\...\mysite\python-ve\env\lib\site-packages\django\shortcuts.py in get_object_or_404, line 90
  Python Executable:  C:\Users\...\mysite\python-ve\env\Scripts\python.exe
  Python Version: 2.7.15
  </code></pre>
  
  <p>Following is my model.py</p>
  
  <pre><code>from __future__ import unicode_literals
  from django.core.urlresolvers import reverse
  from django.db import models
  from django.utils import timezone
  from django.contrib.auth.models import User
  
  class PublishedManager(models.Manager):
      def get_queryset(self):
          return super(PublishedManager,self).get_queryset()\
          .filter(status='published')
  
  class post(models.Model):
      STATUS_CHOICES = (
          ('draft', 'Draft'),
          ('published','Published'),
      )
  
  title = models.CharField(max_length=250) # field for the post title
  slug = models.SlugField(max_length=250, unique_for_date='publish') 
  author = models.ForeignKey(User, related_name ='blog_posts')
  body = models.TextField()# text field. body of the post
  publish = models.DateTimeField(default=timezone.now) 
  created = models.DateTimeField(auto_now_add=True)
  updated = models.DateTimeField(auto_now=True) 
  status = models.CharField(max_length = 10, 
  choices=STATUS_CHOICES,default='draft') # to know the status of the post
  objects = models.Manager()
  published = PublishedManager()
  
  class Meta: # sort results by the publish field in descending order
      ordering = ('-publish',)
  
  def __str__(self):
      return self.title
  
  def get_absolute_url(self):    
      return reverse('blog:post_detail', args[self.publish.year, 
      self.publish.strftime('%m'), self.publish.strftime('%d'), self.slug])
  </code></pre>
  
  <p>My views.py where the exception is:</p>
  
  <pre><code>from __future__ import unicode_literals
  from django.shortcuts import render, get_object_or_404
  from .models import post
  
  def post_list(request):
      posts = post.published.all()
      return render(request, 'blog/post/list.html',{'posts':posts})
  
  def post_detail(request, year, month,day,post):
      post = get_object_or_404(post, slug=post, status='published', 
      publish_year=year, publish_month=month, publish_day=day)
      return render(request, 'blog/post/detail.html', {'post':post})
  </code></pre>
  
  <p>I have looked for answers, some I was unable to understand so I have posted it here.</p>