Yes, it's working. Thank you very much :) On Sunday, August 21, 2016 at 9:20:42 PM UTC+3, ludovic coues wrote: > > Sorry, I might have mixed things a bit. > You can use "link in category.link_set" or "category == link.category". > > link_set is set by django when you declared the foreignkey > > 2016-08-21 19:42 GMT+02:00 Yunus <[email protected] <javascript:>>: > > 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 > >> <[email protected]>: > >> > 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 [email protected] > >> >> <mailto:[email protected] <javascript:>>. > >> >> To post to this group, send email to [email protected] > >> >> <mailto:[email protected]>. > >> >> 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 [email protected]. > >> > To post to this group, send email to [email protected]. > >> > 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 [email protected] <javascript:>. > > To post to this group, send email to [email protected] > <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/0e73ba29-be8d-46a2-aaa2-04cac94bfffa%40googlegroups.com. > > > > > > 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 [email protected]. To post to this group, send email to [email protected]. 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/6b856d80-9470-4cb1-a4c8-a6733c14fb98%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

