Django поле многие ко многим использует уникальный ключ вместо первичного ключа - PullRequest
0 голосов
/ 06 июня 2018

У меня есть модель django, которая имеет асимметричные отношения между собой.Мне бы хотелось, чтобы это отношение ссылалось на объекты с использованием уникального идентифицирующего поля, отличного от поля первичного ключа таблицы.

Я не смог найти никакой документации об указании поля для внешнего ключа объекта ManyToMany, используемого для идентификации связанных объектов.Есть ли способ сделать это?

Вот пример:

class Annotation(models.Model):
      uuid = models.UUIDField(null=True, unique=True, editable=False)
      data = models.TextField()
      dependencies = models.ManyToManyField('self', symmetrical=False,
                                            related_name="dependents")

В приведенном выше примере зависимости будут отображаться как IntegerField с IntegerField с, потому что этоТип поля первичного ключа id, неявно созданного в Annotation.

Вместо этого я хотел бы, чтобы в таблице отношений (используемой для поддержания отношений) использовалось поле uuid, которое я определил вручную (вместоid field).

В идеале я бы предположил, что замена self (первый параметр на ManyToManyField) на self.uuid или Annotation.uuid сделает именно это, но, к сожалению, эта ошибка со следующим:

ValueError: Related model 'Annotation.uuid' cannot be resolved
...