[Python] Como faço para criar um slug automaticamente a partir do título de um item criado com...

Discussão em 'Python' iniciado por Stack, Outubro 23, 2024.

  1. Stack

    Stack Membro Participativo

    Como a linha prepopulated_fields = {'slug': ('name',)} dá para gerar o slug de um objeto automaticamente apenas escrevendo o seu nome no painel do admin. Eu queria fazer isso também quando o objeto é criado a partir de um formulário. Como eu faço isso?

    minha model.py

    from django.db import models
    from django.urls import reverse


    class Team(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField(blank=True, null=True)
    slug = models.SlugField(max_length=255)
    archived = models.BooleanField(default=False)

    def __str__(self):
    return self.name

    def get_absolute_url(self):
    return reverse("core:team", kwargs={'pk': self.pk})



    Meu form.py

    from django import forms
    from .models import Team


    class TeamForm(forms.ModelForm):
    class Meta:
    model = Team
    fields = ['name', 'description']


    Minha view.py

    from django.shortcuts import render, get_object_or_404, redirect
    from django.http import HttpResponseRedirect
    from django.urls import reverse
    from .models import Team
    from .forms import TeamForm


    def homePage(request):
    """
    View all teams.
    """
    context = {
    'teams': Team.objects.all().filter(archived=False),
    }
    template = 'index.html'
    return render(request, template, context)


    def teamDetail(request, pk):
    """
    View team details
    """
    context = {
    'team': get_object_or_404(Team, pk=pk),
    }
    template = 'team.html'
    return render(request, template, context)


    def createTeam(request):
    """
    Create a team
    """
    form = TeamForm(request.POST or None)

    if request.method == 'POST':

    if form.is_valid():
    teams_instance = form.save(commit=False)
    teams_instance.save()
    return HttpResponseRedirect(reverse(
    'core:team',
    kwargs={'pk': teams_instance.pk}))

    context = {
    'form': form
    }
    template = 'create_team.html'
    return render(request, template, context)


    def updateTeam(request, pk):
    """
    Update a team
    """
    get_team = get_object_or_404(Team, pk=pk)
    form = TeamForm(request.POST or None, instance=get_team)

    if request.method == 'POST':

    if form.is_valid():
    teams_instance = form.save(commit=False)
    teams_instance.save()
    return HttpResponseRedirect(reverse(
    'core:team',
    kwargs={'pk': teams_instance.pk}))

    context = {
    'form': form
    }
    template = 'update_team.html'
    return render(request, template, context)


    def deleteTeam(request, pk):
    """
    Detele team
    """
    get_team = get_object_or_404(Team, pk=pk)

    if request.method == 'POST':
    get_team.delete()
    return redirect('core:home')

    context = {
    'delete': get_team,
    }
    template = 'delete_team.html'
    return render(request, template, context)

    Continue reading...

Compartilhe esta Página