2 votes

L'inverse pour 'chi_tiet_hop_dong' avec les arguments du mot clé '{'so_hd' : ''}' n'a pas été trouvé. 1 motif(s) essayé(s) : ['chi_tiet_hop_dong/(?P<so_hd>[^/]+)/$']

J'ai le problème suivant enter image description here

mon modèle.

class testimport(models.Model):
    id=models.AutoField(primary_key=True)
    so_hd=models.CharField( max_length=50, unique=True)
    ten_kh=models.CharField( max_length=500)

    def get_absolute_url(self):
        return "/chi_tiet_hop_dong/%s/" % self.so_hd

class report(models.Model):
     id=models.AutoField(primary_key=True)
     so_hd=models.ForeignKey(testimport, on_delete=models.CASCADE, to_field="so_hd")

Si je n'utilise pas to_field="so_hd" dans le modèle de rapport, l'erreur n'apparaît pas, mais j'ai besoin de le lier avec "so_hd" dans le modèle de rapport et non avec "id primary key" dans le modèle de rapport sans utiliser to_field.

mon avis :

def chi_tiet_hop_dong(request,so_hd):
    contract=testimport.objects.filter(so_hd=so_hd)
    print("s hp ng trong def chi tit hp ng",so_hd)
    request.session["save_so_hd"]=json.loads(json.dumps(so_hd))
    lst_contract=request.session["get_contract_detail"]

    try:
        the_next = lst_contract[lst_contract.index(so_hd) + 1]
        print("the next",the_next)
    except:
        the_next=None

    try:
        the_prev=lst_contract[lst_contract.index(so_hd) - 1]
        print("the prev",the_prev)
    except:
        the_prev=None

    baocao=report.objects.filter(so_hd=so_hd)

    form=AddReportForm()

    return render(request, "caller_template/contract_detail.html", {"contract":contract,"the_next":the_next,"the_prev":the_prev,"baocao":baocao,"form":form})

Je vérifie l'impression de the_next, the_prev et so_hd, c'est correct.

mon url :

path('chi_tiet_hop_dong/<str:so_hd>/', CallerViews.chi_tiet_hop_dong, name="chi_tiet_hop_dong"),

Aidez-moi, s'il vous plaît

2voto

Je pense que vous devriez essayer de filtrer par l'id au lieu du so_hd donc vous devriez procéder comme ceci dans votre vue :

def chi_tiet_hop_dong(request,so_hd):
    contract=testimport.objects.filter(id=so_hd)
    print("s hp ng trong def chi tit hp ng",so_hd)
    request.session["save_so_hd"]=json.loads(json.dumps(so_hd))
    lst_contract=request.session["get_contract_detail"]

    try:
        the_next = lst_contract[lst_contract.index(so_hd) + 1]
        print("the next",the_next)
    except:
        the_next=None

    try:
        the_prev=lst_contract[lst_contract.index(so_hd) - 1]
        print("the prev",the_prev)
    except:
        the_prev=None

    baocao=report.objects.filter(id=so_hd)

    form=AddReportForm()

    return render(request, "caller_template/contract_detail.html", {"contract":contract,"the_next":the_next,"the_prev":the_prev,"baocao":baocao,"form":form})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X