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 строки, но я еще не разбираюсь в этом. Есть ли у вас какие-нибудь предложения по этому поводу, пожалуйста?