GTA.sprx
GTA.sprx

Reputation: 827

Two slugs in url

I want to have a url pattern that takes 2 slugs. I'm trying to make it look like http://127.0.0.1:8000/category/model but I'm having difficulties understanding how to do this.

Below is what I have so far:

models.py

def model_detail_view(request, category_slug, model_slug):
        model = Model.objects.get(
        category__slug=category_slug, model_slug=model_slug)
    context = {
        "model": model,
    }
    return render(request=request, template_name='main/model_detail.html', context=context)

urls.py

path("<str:category_slug>/<str:model_slug>/", views.model_detail_view, name="model_detail_view"),

models.py

class Category(models.Model):
    title = models.CharField(max_length=50)
    featured_image = models.ImageField(upload_to="categories")
    category_slug = AutoSlugField(null=True, default=None,
                         unique=True, populate_from='title')

    class Meta:
        verbose_name_plural = "Categories"

    def __str__(self):
        return self.title

class Model(models.Model): 
    title = models.CharField(max_length=80)
    category = models.ManyToManyField(Category)
    featured_image = models.ImageField(upload_to=image_dir)
    model_slug = AutoSlugField(null=True, default=None,
                         unique=True, populate_from='title')

    class Meta:
        verbose_name_plural = "Models"

    def __str__(self):
        return self.title

Upvotes: 0

Views: 34

Answers (1)

JPG
JPG

Reputation: 88429

Try this,

model = model = Model.objects.get(category__category_slug=category_slug, model_slug=model_slug)


Reference:

  1. Django:Lookups that span relationships---(Django Doc)

Upvotes: 1

Related Questions