I am trying to make a query to two different models, which have a common field. This is my file models.py
:
class Service(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE)
# otros atributos
class Visa(models.Model):
# atributos de la clase Visa
class Passport(models.Model):
# atributos de la clase Passport
and in the view I have ( views.py
):
class SearchView(generic.FormView):
form_class = forms.SearchForm
# otros atributos
def form_valid(self, form):
search = form.search_status()
if self.request.is_ajax():
data = {
'data': search,
}
return JsonResponse(data)
else:
return super().form_valid(form)
And this is my file forms.py
:
class SearchForm(forms.Form):
search = forms.CharField()
def search_status(self):
search = self.cleaned_data['search']
visa_result = models.Visa.objects.filter(
Q(client__ci__exact=search) & Q(status='active')
)
passport_result = models.Passport.objects.filter(
Q(client__ci__exact=search) & Q(status='active')
)
result = []
for v in visa_result:
result.append(v)
for p in passport_result:
result.append(p)
return result
The query performs well, but on the visa, when a json returns, it gives the following error: TypeError: Object of type 'Visa' is not JSON serializable
. How can I make my models serializable?