زمانی که میخوام url یک ابجت رو با استفاده از get_absolute_url بدست بیارم به این ارور میخورم دوستان میشه لطف کنید راهنمایی کنید
خیلی کوتاه سعی میکنم یه تیکه کد بدم خدمتت که استفاده کنی :
model.py
from django.db import models
class Library(models.Model):
title = models.CharField()
slug = models.SlugField()
date = models.DateField()
body = models.TextField()
def __str__(self):
return self.title
def get_absolute_url(self):
return "/library/{}/".format(self.slug)
views.py
from django.views.generic import ListView, DetailView
from .models import Library
from django.utils import timezone
class LibraryListView(ListView):
model = Library
paginate_by = '20'
queryset = Library.objects.all().order_by('-date')
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['now'] = timezone.now()
return context
class LibraryDetailView(DetailView):
model = Library
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['now'] = timezone.now()
return context
urls.py
from django.urls import path
from .views import LibraryListView, LibraryDetailView
app_name= 'library'
urlpatterns = [
path('library', LibraryListView.as_view(), name='library'),
path('library/<slug:slug>/', LibraryDetailView.as_view(), name='library-detail'),
]
libarary_list.html
{% if library_list %}
{% for library in library_list %}
<a href='{{ library.get_absolute_url }}' target="_top">
{{ library.title}}
{{library.date|date:"M Y"}}
{% endfor %}
{% else %}
Ops , Nothing here :(
{% endif %}
1 پسندیده
خوب ببخشید الان دوباره نگاه کردم و نسبت به پروژه خودتون یه سری اصلاحات رو میگم خدمتتون
models.py
from django.db import models
from django.urls import reverse
class Band(models.Model):
name = models.CharField(max_length=64)
slug = models.SlugField()
def get_absolute_url(self):
return reverse('band-detail', kwargs={'slug': self.slug })
class Album(models.Model):
band = models.ForeignKey(Band , on_delete=models.CASCADE)
name = models.CharField(max_length=64)
slug = models.SlugField()
def get_absolute_url(self):
return reverse('album-detail', kwargs={'slug': self.slug })
urls.py
from django.urls import path
from .views import BandListView,BandDetailView, AlbumListView, AlbumDetailView
urlpatterns = [
path('band/', BandListView.as_view() , name='band'),
path('band/<slug:slug>', BandDetailView.as_view(), name='band-detail'),
path('album/', AlbumListView.as_view(), name='album'),
path('album/<slug:slug>', AlbumDetailView.as_view(),name='album-detail'),
]
album_list.html
{% if album_list %}
{% for album in album_list %}
<a href='{{ album.get_absolute_url }}'>album detail Link</a>
<a href='{{ album.band.get_absolute_url }}'>band details Link</a>
{{ album.band}}
{{ album.name}
{% endfor %}
{% else %}
Ops :(
{% endif %}
1 پسندیده
https://django-taggit.readthedocs.io/en/latest/
برای تگ زدن هم میتونید از این کتابخانه استفاده کنید
1 پسندیده