У меня есть модель с именем Profile
(с различными полями) и другая модель Trans
.Модель Trans
выглядит следующим образом (обе модели в приложении accounts
):
class Trans(models.Model):
sender = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='sender')
receiver = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='receiver')
#...
Создано много экземпляров (в представлениях) с использованием:
t = Trans.objects.create(sender_id=profile.pk, receiver_id=prof.pk, ...)
t.save()
Где profile.pk
и prof.pk
являются первичными ключами двух разных объектов профиля (отправитель и получатель).
Миграция приложения приводит к этой ошибке:
django.db.utils.IntegrityError: (1062, "Дублирующая запись '2' для ключа 'accounts_trans_receiver_id_592a7105_uniq'")
Я проверил структуру таблицы accounts_trans
на сервере MySQL и обнаружил, что sender_id
принимается за MUL
ключ, который означает «Несколько записей могут иметь одного отправителя (профиль)».Хотя получатель не назначен как MUL
ключ, и это, я думаю, почему миграция не работает!Я не могу изменить поле receiver_id
на MUL
в базе данных MySQL.
Может кто-нибудь помочь решить эту проблему?Заранее спасибо.