Django tables2 TypeError: Объект типа Client не является JSON сериализуемым

Я пытаюсь реализовать большие данные на django-tables2, но с фичами bootstrap таблиц (сортировка, фильтр, экспорт, click to select, etc). Нашел решение, но оно работает только с простыми полями, в моем проекте некоторые поля в модели связаны с другой моделью:

class Cars(models.Model):
    dealer = models.ForeignKey(Dealer, blank=True, null=True, on_delete=models.CASCADE)
    slug = models.SlugField(null=True, unique=True)
    VIN = models.CharField(max_length=19, blank=True, null=True)
    model = models.CharField(max_length=50) # Car_model, on_delete=models.CASCADE
    client = models.ForeignKey(Client, blank=True, null=True, on_delete=models.CASCADE)
    manager = models.ForeignKey(Manager, blank=True, null=True, on_delete=models.CASCADE)

Вот мой код в файле views.py:

class TableViewMixin(SingleTableMixin):
# disable pagination to retrieve all data
table_pagination = False

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)

    # build list of columns and convert it to an
    # ordered dict to retain ordering of columns
    # the dict maps from column name to its header (verbose name)
    table: Table = self.get_table()
    table_columns: List[Column] = [
        column
        for column in table.columns
    ]

    # retain ordering of columns
    columns_tuples = [(column.name, column.header) for column in table_columns]
    columns: OrderedDict[str, str] = OrderedDict(columns_tuples)

    context['columns'] = columns

    return context

def get(self, request, *args, **kwargs):
    # trigger filtering to update the resulting queryset
    # needed in case of additional filtering being done
    response = super().get(self, request, *args, **kwargs)
    
    if 'json' in request.GET:
        table: Table = self.get_table()

        data = [
            {column.name: cell for column, cell in row.items()}
            for row in table.paginated_rows
        ]

        return JsonResponse(data, safe=False)
    else:
        return response

class CarsTableViewMixin(TableViewMixin, ListView):
    template_name = 'modules/cars_tables3.html'
    table_class = CarsTable
    queryset = Cars.objects.all()

У меня ошибка: TypeError: Object of type Client is not JSON serializable "GET /table3/?json&searchText= HTTP/1.1" 500 146887

Я знаю, что есть что-то, что нужно добавить в сериализацию моей json строки, но я еще не разбираюсь в этом. Есть ли у вас какие-нибудь предложения по этому поводу, пожалуйста?

Вернуться на верх