GenericForeignKey с BaseDatatableView
У меня возникли проблемы с использованием общего внешнего ключа в BaseDatatableView
.
Я решил использовать общий внешний ключ в Django. В ORM я могу сделать то, что мне нужно, я могу перейти через content_object
к экземпляру, который связан с этим полем, и легко прочитать значения поля этого экземпляра. Проблема возникает, когда я создаю таблицы, используя BaseDatatableView
.
[models.py]
class Warehouse(models.Model):
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
quantity = models.IntegerField()
def __str__(self):
return f'{self.content_object.name} - {self.quantity}'
class Meta:
indexes = [
models.Index(fields=['content_type', 'object_id'])
]
class Product1(models.Model):
name = models.CharField(max_length=50)
tag = models.SlugField()
note = models.CharField(max_length=20)
def __str__(self):
return self.tag
class Product2(models.Model):
name = models.CharField(max_length=50)
tag = models.SlugField()
note = models.CharField(max_length=20)
def __str__(self):
return self.tag
(Архитектура модели является образцовой и проверяет только взаимоотношения)
[table.py]
class Product1WarehouseDataTable(BaseDatatableView):
model = Warehouse
columns = ['content_object__name', 'content_object__tag', 'content_object__note', 'quantity']
def get_initial_queryset(self):
ct = ContentType.objects.get_for_model(Product1)
qs = self.model.objects.filter(content_type=ct)
return qs
BaseDatatableView
выдает ошибку:
Поле 'content_object' не генерирует автоматического обратного отношения и поэтому не может использоваться для обратного запроса. Если это GenericForeignKey, рассмотрите возможность добавления GenericRelation.
Я хочу отобразить данные из Product1
в таблице из Warehouse
модели.
Я уже использовал BaseDatatableView
, но это первый раз, когда я использую общие ключи.