2 поля внешнего ключа, ссылающиеся на одну и ту же модель django, приводят к ошибкам миграции - PullRequest
0 голосов
/ 03 октября 2018

У меня есть модель с именем 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.

Может кто-нибудь помочь решить эту проблему?Заранее спасибо.

...