create slugs manually

This commit is contained in:
Kuroshini 2019-09-23 18:02:42 +03:00
parent 1ce71fdcdc
commit 6420a676df
7 changed files with 10 additions and 12 deletions

View File

@ -1,6 +1,5 @@
from django.contrib.postgres.fields import JSONField
from django.contrib.contenttypes.fields import ContentType
from django_extensions.db.fields import AutoSlugField
from utils.models import TJSONField
from django.db import models
@ -69,8 +68,8 @@ class Collection(ProjectBaseMixin, CollectionNameMixin, CollectionDateMixin,
description = TJSONField(
_('description'), null=True, blank=True,
default=None, help_text='{"en-GB":"some text"}')
slug = AutoSlugField(max_length=50, db_index=True, populate_from=['name', 'pk'],
verbose_name=_('Collection slug'), editable=True)
slug = models.SlugField(max_length=50, unique=True,
verbose_name=_('Collection slug'), editable=True, null=True)
objects = CollectionQuerySet.as_manager()

View File

@ -7,7 +7,7 @@ app_name = 'collection'
urlpatterns = [
path('', views.CollectionListView.as_view(), name='list'),
path('<int:pk>/establishments/', views.CollectionEstablishmentListView.as_view(),
path('<slug:slug>/establishments/', views.CollectionEstablishmentListView.as_view(),
name='detail'),
path('guides/', views.GuideListView.as_view(), name='guides-list'),

View File

@ -40,6 +40,7 @@ class CollectionEstablishmentListView(CollectionListView):
permission_classes = (permissions.AllowAny,)
pagination_class = ProjectPageNumberPagination
serializer_class = EstablishmentListSerializer
lookup_field = 'slug'
def get_queryset(self):
"""
@ -47,7 +48,7 @@ class CollectionEstablishmentListView(CollectionListView):
"""
queryset = super(CollectionEstablishmentListView, self).get_queryset()
# Perform the lookup filtering.
collection = get_object_or_404(queryset, pk=self.kwargs['pk'])
collection = get_object_or_404(queryset, slug=self.kwargs['slug'])
# May raise a permission denied
self.check_object_permissions(self.request, collection)

View File

@ -9,7 +9,6 @@ from django.core.exceptions import ValidationError
from django.db import models
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from django_extensions.db.fields import AutoSlugField
from phonenumber_field.modelfields import PhoneNumberField
from location.models import Address
@ -278,7 +277,7 @@ class Establishment(ProjectBaseMixin, URLImageMixin, TranslatedFieldsMixin):
verbose_name=_('Collections'))
preview_image_url = models.URLField(verbose_name=_('Preview image URL path'),
blank=True, null=True, default=None)
slug = AutoSlugField(db_index=True, max_length=50, populate_from=['name'],
slug = models.SlugField(unique=True, max_length=50, null=True,
verbose_name=_('Establishment slug'), editable=True)
awards = generic.GenericRelation(to='main.Award')

View File

@ -20,7 +20,7 @@ class EstablishmentListCreateSerializer(EstablishmentBaseSerializer):
phones = ContactPhonesSerializer(read_only=True, many=True, )
emails = ContactEmailsSerializer(read_only=True, many=True, )
socials = SocialNetworkRelatedSerializers(read_only=True, many=True, )
slug = serializers.SlugField(allow_blank=True)
slug = serializers.SlugField(required=True, allow_blank=False)
class Meta:
model = models.Establishment

View File

@ -146,7 +146,7 @@ class EstablishmentBaseSerializer(serializers.ModelSerializer):
subtypes = EstablishmentSubTypeSerializer(many=True)
address = AddressSerializer()
tags = MetaDataContentSerializer(many=True)
slug = serializers.SlugField(allow_blank=True)
slug = serializers.SlugField(allow_blank=False, required=True)
class Meta:
"""Meta class."""
@ -199,7 +199,7 @@ class EstablishmentDetailSerializer(EstablishmentListSerializer):
best_price_menu = serializers.DecimalField(max_digits=14, decimal_places=2, read_only=True)
best_price_carte = serializers.DecimalField(max_digits=14, decimal_places=2, read_only=True)
slug = serializers.SlugField(read_only=True)
slug = serializers.SlugField(required=True, allow_blank=False,)
in_favorites = serializers.SerializerMethodField()

View File

@ -3,7 +3,6 @@ from django.db import models
from django.contrib.contenttypes import fields as generic
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from django_extensions.db.fields import AutoSlugField
from rest_framework.reverse import reverse
from utils.models import BaseAttributes, TJSONField, TranslatedFieldsMixin
@ -68,7 +67,7 @@ class News(BaseAttributes, TranslatedFieldsMixin):
start = models.DateTimeField(verbose_name=_('Start'))
end = models.DateTimeField(blank=True, null=True, default=None,
verbose_name=_('End'))
slug = AutoSlugField(db_index=True, max_length=50, populate_from=['title'],
slug = models.SlugField(unique=True, max_length=50, null=True,
verbose_name=_('News slug'), editable=True,)
playlist = models.IntegerField(_('playlist'))
is_publish = models.BooleanField(default=False,