TransWikia.com

ver si ya existe relacion OnetoOne en Django

Stack Overflow en español Asked by natogua on December 7, 2020

tengo una app en la que hago un CRUD de prestamo de libros, un libro solo puede ser prestado una vez(tiene una relacion onetoone con la tabla clientes), como podria hacer para chequear si el libro ya existe en la "loansTable" para que envie un mensaje al intentar agregarlo nuevamente (aca paso las tres tablas juntas pero estan cada una en una app diferente)

models.py

class loansTable(models.Model):
bookLoan = models.OneToOneField(booksTable,null=True,blank=True,on_delete=models.CASCADE)
clientLoan = models.ForeignKey(clientsTable,null=True,blank=True,on_delete=models.CASCADE)
dateLoan = models.DateField()
dateReturn = models.DateField()
status = models.CharField(max_length=10,default='borrowed')
def __str__(self):
    return '{}'.format(self.bookLoan,self.clientLoan,self.status)


class booksTable(models.Model):
name = models.CharField(max_length=50)
author = models.CharField(max_length=50)
def __str__(self):
    return '{}'.format(self.name)


class clientsTable(models.Model):
    name = models.CharField(max_length=50)
    adress = models.CharField(max_length=50)
    phone = models.CharField(max_length=50)
    email = models.EmailField()
    def __str__(self):
        return '{}'.format(self.name)

Views.py

def loans_list(request):
qs = loansTable.objects.all()
paginator = Paginator(qs,5)
page_number = request.GET.get('page',1)

try:
    page_obj = paginator.page(page_number)
except (PageNotAnInteger, EmptyPage):
    raise Http404(f'Invalid page {page_number}. That page contains no results')

context = {'list':qs, 'object_list': page_obj,'page_obj': page_obj}
return render(request, 'loansApp/loans.html',context)


def loan_add(request):
    if request.method == 'POST':
        form= LoansForm(request.POST)
        if form.is_valid():
            form.save()
       return redirect('/loansApp/loans')
  else:
    form= LoansForm()
 return render (request,'loansApp/addloan.html',{'form':form})

One Answer

asumo que le pasas el id del book cuando lo añades al loan entonces ahi solamente es que verifiques que está en la tabla de loan asi:

try:
   prestamo= loansTable.objects.get(bookLoan_id=id_del_book_que_llega_por_parametro)
   return mensaje de si esta
except loansTable.DoesNotExist:
   return mensaje de no esta y añadir el libro al loanstable

Como consejo nombra los modelos en singular, con mayuscula inicial y sin el table asi: BookLoan, Book etc...

Correct answer by Raiganfast on December 7, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP