SS_SS
SS_SS

Reputation: 63

URL to redirect related model instance django

I have a 2 models with ForeignKey linked to each other

class Moc(models.Model):
  title = models.CharField(max_length=128, blank=False)
  scope = models.TextField(max_length=128, blank=False)
  ....
  def __str__(self):
    return self.title

class Verifier(models.Model):
  moc = models.ForeignKey(Moc, related_name='verifiers' on_delete=models.CASCADE)
  user = models.ForeignKey(User, on_delete=models.CASCADE)
  approve = models.BooleanField(default=False). reject = 
  reject = models.BooleanField(default=False)
  ....
  def __str__(self):
    return str(self.id)

I have a respective forms, views and templates to create, update, delete records.

def verifier_signoff_view(request, pk):

    verifier = Verifier.objects.get(pk=pk)
    form = VerifierSignForm
    if request.method == 'POST':
        form = VerifierSignForm(request.POST, instance=verifier)
        if form.is_valid():
            form.save(commit=False)
            if verifier.approve is True and verifier.reject is True:
                return HttpResponseForbidden('You have either APPROVE or REJECT - operation not allowed!')
            else:
                form.save()

        return redirect('verify_coorinate' pk=verifier.moc_id) # This is where I need help...
    else:
        return render(request, 'moc/verify_signoff.html', context={'verifier': verifier, 'form': form})

My urls.py

urlpatterns = [
....
....

path('moc-content/<int:pk>/verify-coordinate, views.verify_coordinate_view', name='verifiy_coordinate'),
....
....
]

What I want is that after I update verifier instance as per above view, I want to redirect back to moc instance rather than verifier instance, i.e. pass in url Moc instance pk instead of Verifier instance pk.

Any help please...

Upvotes: 0

Views: 109

Answers (1)

Maxim Danilov
Maxim Danilov

Reputation: 3360

you probably forgot the comma:

redirect('verify_coorinate', pk=verifier.moc_id) # This is line, where you need help

more here: https://docs.djangoproject.com/en/4.1/topics/http/shortcuts/#redirect

Please, try to use Django-GCBV. In your case it can be UpdateView or FormView with SingleObjectMixin more here: https://docs.djangoproject.com/en/4.1/ref/class-based-views/generic-editing/#django.views.generic.edit.UpdateView

Upvotes: 1

Related Questions