Ошибка при использовании "сквозной" промежуточной модели с django-sortedm2m
Возможно ли определить мою собственную промежуточную модель с sortedm2m используя through? В моем случае у меня есть такая модель:
class Sample(models.Model):
id_sample = models.AutoField(primary_key=True)
name = models.CharField(unique=True, max_length=20)
indexes = SortedManyToManyField(Index, through='SamplePoolIndexCand', blank=True)
pools = SortedManyToManyField(Index, through='SamplePoolIndexCand', blank=True)
gene_lists = SortedManyToManyField(Index, through='SamplePoolIndexCand', blank=True)
Моя промежуточная таблица:
class SamplePoolIndexCand(models.Model):
sample_id = models.ForeignKey(Sample, null=True, blank=True, on_delete=models.CASCADE)
pool_id = models.ForeignKey(Pool, null=True, blank=True, on_delete=models.CASCADE)
index_id = models.ForeignKey(Index, null=True, blank=True, on_delete=models.CASCADE,
gene_cand_list_id = models.ForeignKey(GeneCandList, null=True, blank=True, on_delete=models.CASCADE)
class Meta:
unique_together = (("sample_id", "pool_id", "index_id", "gene_cand_list_id"),)
Я получил следующее сообщение об ошибке:
AssertionError: The model is used as an intermediate model by '<class 'myproject.models.SamplePoolIndexCand'>' but has no defined '_sort_field_name' attribute
Как я могу решить эту проблему? Я пытался добавить поле упорядочивания в промежуточную таблицу, но получил ту же ошибку:
class SamplePoolIndexCand(models.Model):
sample_id = models.ForeignKey(Sample, null=True, blank=True, on_delete=models.CASCADE)
pool_id = models.ForeignKey(Pool, null=True, blank=True, on_delete=models.CASCADE)
index_id = models.ForeignKey(Index, null=True, blank=True, on_delete=models.CASCADE,
gene_cand_list_id = models.ForeignKey(GeneCandList, null=True, blank=True, on_delete=models.CASCADE)
sort_value = models.IntegerField()
class Meta:
ordering = ["sort_value"]
unique_together = (("sample_id", "pool_id", "index_id", "gene_cand_list_id"),)
Я использую Django версии 3.1.7 и Python 3.8.10.