Django унаследованная база данных миграции многих на многие промежуточные таблицы - PullRequest
0 голосов
/ 07 сентября 2018

Миграция устаревшей БД в Django (v1.11) (из Sequelize).

Промежуточная таблица в базе данных не имеет идентификатора (атрибут первичного ключа), так как Sequelize не требует этого, но кажется, что она обязательна в Django.

Текущая настройка Django:

class Address(models.Model):
    keyword = models.CharField(max_length=255)
    city = models.CharField(max_length=255, blank=True, null=True)
    state = models.CharField(max_length=255, blank=True, null=True)
    createdAt = models.DateTimeField(db_column='createdAt', auto_now_add=True)
    updatedAt = models.DateTimeField(db_column='updatedAt', auto_now=True)

    class Meta:
        db_table = 'Addresses'

class CustomerExecutive(models.Model):
    name = models.CharField(max_length=255, blank=True, null=True)
    email = models.CharField(max_length=255)
    addresses = models.ManyToManyField('Address', through='AddressCustomerExecutiveMapping')
createdAt = models.DateTimeField(db_column='createdAt', auto_now_add=True)
updatedAt = models.DateTimeField(db_column='updatedAt', auto_now=True)

    class Meta:
        db_table = 'CustomerExecutives'

class AddressCustomerExecutiveMapping(models.Model):
    address = models.ForeignKey(Address,  db_column='addressId', primary_key=True)
    customer_executive = models.ForeignKey(CustomerExecutive, db_column='customerExecutiveId', primary_key=True)
    createdAt = models.DateTimeField(db_column='createdAt', auto_now_add=True)
    updatedAt = models.DateTimeField(db_column='updatedAt', auto_now=True)

    class Meta:
        db_table = 'AddressCustomerExecutiveMapping'
    unique_together = (('address', 'customer_executive'),)

Если primary_key не указано в AddressCustomerExecutiveMapping.address или AddressCustomerExecutiveMapping.customer_executive, это дает ошибку, необходимую для первичного ключа, и, если она указана, я не могу добавить повторяющиеся значения в столбце (тогда их будет не много, а много).

Как я могу решить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...