call custom manager in template

hi
i have template, when i clic under icon dont go to desired view or urls path
please any help i will apreciate it
code below:

template

a href=“test_detail.test_analyse.get_add_to_cart_url” >…

model
class Test(models.Model):
title:models.CharField ( max_length = 35 )

class Test_Analyse(models.Model):
tests = models.ForeignKey ( ‘tests.Test’ , on_delete = models.CASCADE )
analyse = models.ForeignKey(‘Analyse’,on_delete = models.CASCADE)

def __str__(self):
    return self.test.title + ' : ' + self.analyse.code

def get_add_to_cart_url(self):
    return reverse("tests:add-to-cart", kwargs={'tests':self.tests,'analyse':self.analyse})

urls
path(‘int:idtest/int:idanalyse’, views.add_to_cart, name=‘add-to-cart’),

views
def add_to_cart(request, idtests, idanalyse):
print(str(idtests)+’:’+str(idanalyse))

Hi!

After the template is rendered, what’s the url of the <a> tag?

If I understand correctly, you could save 1 step and put use the {% url %} template tag in your HTML template.

<a href="{% url 'tests:add-to-cart' idtest=self.tests idanalyse=self.analyse %}">

PD:

  • I suggest you to format your code inside a pair of ``` around your code.
  • Also, please change the topic of this issue to Using Django.
    Django Internals is for things related to the development of Django itself.

thanks for your reply and sorry for mistakes
url does not work as you proposed
template

<td>
<a href="test_detail.test_analyse.get_add_to_cart_url"  ><i class="glyphicon glyphicon glyphicon-shopping-cart"></i></a>
</td>

model
class Test(models.Model):
   title:models.CharField ( max_length = 35 )

class Test_Analyse(models.Model):
    tests = models.ForeignKey ( 'tests.Test' , on_delete = models.CASCADE )
    analyse = models.ForeignKey('Analyse',on_delete = models.CASCADE)

   def __str__(self):
       return self.test.title + ' : ' + self.analyse.code

    def get_add_to_cart_url(self):
       return reverse("tests:add-to-cart", kwargs={'tests':self.tests,'analyse':self.analyse})

urls
path('<int:idtest>/<int:idanalyse>', views.add_to_cart, name='add-to-cart'),

views
def add_to_cart(request, idtests, idanalyse):
   print(str(idtests)+':'+str(idanalyse))

Ok, so what’s inside href after the page is rendered?

get_add_to_cart_url in Test_Analyse reverse to urls : path add-to-cart with two parameters to views

hi i have success to solve problem with ‘’’ {% url …
i have error with this code,it gives error from third line (lig_reserv,created) :

def add_to_cart(request, id, id1):
    an_t = get_object_or_404(Test_Analyse, tests=id, analyse=id1)
    
    lig_reserv,created=  Ligne_Reserve.objects.get_or_create(analyse=an_t)
    reserv_qs = Reserve.objects.filter(client=request.user,active=False)
    if reserv_qs.exists():
       reserv = reserv_qs[0]
       if not (reserv.ligne_reserve.filter(analyse=an_t).exists) :
           reserv.ligne_reserve.add(lig_reserv) 
    else:
         reserv_date = timezone.now()
         reserv = Reserve.objects.create(
             client = request.user,date = reserv_date)
         reserv.ligne_reserve.add(lig_reserv)    
         return redirect("tests:tests_details",tests=id)


model 
class Test(models.Model):
  title:.....

class Analyse ( models.Model ):
    code = models.CharField ( max_length = 20 )
    desc = models.TextField ( )
    tests= models.ManyToManyField ( 'tests.Test' , through = 'Test_Analyse' )

class Test_Analyse (models.Model):
    tests= models.ForeignKey ( 'tests.Test' , on_delete = models.CASCADE )
    analyse = models.ForeignKey('Analyse',on_delete = models.CASCADE)

class Reserve ( models.Model ):
   client = models.ForeignKey ( User , on_delete = models.CASCADE , default = 'blank' )
   date = models.DateTimeField ( default = datetime.now )
   active = models.BooleanField(default = False)
   def get_queryset(self , request):
      qs = super ( Reserve , self ).get_queryset ( request )
      return qs.filter ( client = request.user )

   def __str__(self):
         return self.client.username + ' : ' + str( self.date )


class Ligne_Reserve ( models.Model ):
   reservations = models.ForeignKey (Reserve , on_delete = models.CASCADE)
  
   analyse = models.ForeignKey('analyse.Test_Analyse', on_delete = models.CASCADE)

Anytime you get an error, it’s important that you post the complete error.
See How do I ask a good question? - Help Center - Stack Overflow for some thoughts.

Since you did mention the line involved, you might want to review the docs of the get_or_create method.

ok thanks, i think my message was clear
from errors i learn
thanks for your assistance