Hm. I get it but it's look like there is no attribute category_set in link.
Given me this error: 'Link' object has no attribute 'category_set'

Here is my models:

#category/models.py
class Category(models.Model):
 name = models.CharField("Name", max_length=100)
 user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True)
 time = models.DateTimeField(auto_now_add=True)
 slug = models.SlugField(max_length=100)
 objects = models.Manager()

 
 def __str__(self):
 return self.name


 def get_absolute_url(self):
 return reverse('category:category_detail', kwargs={"name": self.name,})


#links/models.py
class Link(models.Model):
    title = models.CharField("Headline", max_length=100)
    submitter = models.ForeignKey(settings.AUTH_USER_MODEL, null=True)
    submitted_on = models.DateTimeField(auto_now_add=True)
    rank_score = models.FloatField(default=0.0)
    url = models.URLField("URL", max_length=250)
    category = models.ForeignKey(Category, null=True)
    description = models.TextField(blank=True)
    slug = models.SlugField(unique=True)
    img = models.ImageField(upload_to="thumbnail/", blank=True)
    image_og = models.ImageField(upload_to="thumbnail/", blank=True, default
="/static/images/entry/default.png")
    with_votes = LinkVoteCountManager()
    objects = models.Manager()


    def __str__(self):
        return self.title


    def get_absolute_url(self):
        return reverse('link:link_detail', kwargs={"category": self.category
.slug, "slug": self.slug,
                                                   'pk': str(self.id)
                                                    })
    ....


On Sunday, August 21, 2016 at 2:56:57 PM UTC+3, ludovic coues wrote:
>
> You need to check somewhere that the category exist and that your item 
> belong to the category. 
> The get object method seems like a good place to do it. Something like 
> that should do the trick 
>
>     def get_object(self, queryset=None): 
>         """ Return a 404 code if 
>             * no link with given slug/id 
>             * no category with given slug 
>             * link isn't part of the right category 
>         """" 
>         link = get_object_or_404(Link, 
> pk=self.kwargs['pk'],slug=self.kwargs['slug']) 
>         category = get_object_or_404(Category, 
> slug=self.kwargs['category']) 
>         if not category in link.category_set: 
>             raise Http404 
>         return link 
>
> 2016-08-21 11:01 GMT+02:00 'voger' via Django users 
> <django...@googlegroups.com <javascript:>>: 
> > I barely understand django my self but I hope I am pointing you in the 
> right 
> > direction. 
> > 
> > 1. I don't understand what the (?:/(?P<slug>[\w\d-]+))?/ part in your 
> > pattern is supposed to do. My regexp-fu is weak so I can't comment on 
> that 
> > 
> > 2. Your url will match and pass to the view whatever url you give it. So 
> > even if you give a pk and slug that don't exist in database, still the 
> view 
> > will get called as long as the regexp matches. 
> > 
> > 3. In your view you check the db against the pk and slug and if not 
> found 
> > __the view__ rises 404. 
> > 
> > 4. You don't check if category exist in database and you don't rise 404 
> if 
> > not. In this case it is assumed it is always right. 
> > 
> > 
> > On 20/08/2016 06:10 μμ, Yunus wrote: 
> >> 
> >> Hello, 
> >> 
> >> I want to two slugs in one URL pattern. These slugs from different 
> >> models. I have a model Link with a many to one relationship with a 
> model 
> >> category. 
> >> 
> >> Actually these two slugs is working. But one of the slugs is accepting 
> >> whatever I write in the category_slug section of the url. 
> >> 
> >> Let's say:I 
> >> write 127.0.0.1:8000/there_is_no_name_like_that_in_the_database/pk/slug 
> >> this. 
> >> I am going to this page but there is no category with this name. So, 
> >> basically is accepting whatever I write. 
> >> *#links/views.py* 
> >> | 
> >> classLinkDetailView(FormMixin,DetailView): 
> >>     model =Link 
> >>     context_object_name ='link' 
> >>     form_class =CommentForm 
> >>     success_url =reverse_lazy('home') 
> >> 
> >> 
> >>     defget_object(self,queryset=None): 
> >> 
> >> 
> >> 
> returnget_object_or_404(Link,pk=self.kwargs['pk'],slug=self.kwargs['slug']) 
> >> 
> >> 
> >>     ... 
> >> | 
> >> 
> >> *#links/urls.py* 
> >> | 
> >> urlpatterns =[ 
> >> 
> >> 
> >>     ... 
> >> 
> >>     url( 
> >> 
> >> regex=r'^k/(?P<category>[\w-]+)/(?P<pk>\d+)(?:/(?P<slug>[\w\d-]+))?/$', 
> >>         view=views.LinkDetailView.as_view(), 
> >>         name='link_detail' 
> >>     ), 
> >> 
> >> 
> >>     ... 
> >> ] 
> >> | 
> >> 
> >> -- 
> >> You received this message because you are subscribed to the Google 
> >> Groups "Django users" group. 
> >> To unsubscribe from this group and stop receiving emails from it, send 
> >> an email to django-users...@googlegroups.com <javascript:> 
> >> <mailto:django-users+unsubscr...@googlegroups.com <javascript:>>. 
> >> To post to this group, send email to django...@googlegroups.com 
> <javascript:> 
> >> <mailto:django...@googlegroups.com <javascript:>>. 
> >> Visit this group at https://groups.google.com/group/django-users. 
> >> To view this discussion on the web visit 
> >> 
> >> 
> https://groups.google.com/d/msgid/django-users/0b8482ee-5e64-4ee8-a664-d1d938767bd6%40googlegroups.com
>  
> >> 
> >> <
> https://groups.google.com/d/msgid/django-users/0b8482ee-5e64-4ee8-a664-d1d938767bd6%40googlegroups.com?utm_medium=email&utm_source=footer>.
>  
>
> >> For more options, visit https://groups.google.com/d/optout. 
> > 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "Django users" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to django-users...@googlegroups.com <javascript:>. 
> > To post to this group, send email to django...@googlegroups.com 
> <javascript:>. 
> > Visit this group at https://groups.google.com/group/django-users. 
> > To view this discussion on the web visit 
> > 
> https://groups.google.com/d/msgid/django-users/c9904d3f-f162-cfa5-c9e7-b53330225742%40yahoo.gr.
>  
>
> > 
> > For more options, visit https://groups.google.com/d/optout. 
>
>
>
> -- 
>
> Cordialement, Coues Ludovic 
> +336 148 743 42 
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/0e73ba29-be8d-46a2-aaa2-04cac94bfffa%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to