Я получаю ошибку при переносе моих моделей в базу данных

При миграции в базу данных я получаю такую ошибку:

 return Database.Cursor.execute(self, query)
 django.db.utils.OperationalError: foreign key mismatch - "user_auth_customer" 
 referencing "user_auth_profile"

Я проверил Foreign_Keys своих моделей, и они выглядят хорошо.

Я понятия не имею, почему я получаю эту ошибку :(

)

Пожалуйста, помогите мне.

class Customer(AbstractUser):

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
objects = UserManager()

id = models.UUIDField(default=uuid.uuid4,  unique=True, primary_key=True, editable=False)

profile = models.OneToOneField("Profile", related_name="user_profile",
                               on_delete=models.CASCADE, null=True)
first_name = models.CharField(max_length=50, null=True, blank=True)
last_name = models.CharField(max_length=50, null=True, blank=True)
username = models.CharField(max_length=30, null=True, blank=True)
phone = models.CharField(max_length=10, default='', null=True,  blank=True)
email = models.EmailField(validators=[validators.EmailValidator()],
                          unique=True)
password = models.CharField(max_length=100, null=True, blank=True)
date_created = models.DateTimeField(auto_now_add=True)

@staticmethod
def get_customer_by_email(email):
    try:
        return Customer.objects.get(email=email)
    except:
        return False

def isExists(self):
    if Customer.objects.filter(email=self.email):
        return True

    return False

class Meta:
    verbose_name = 'Customer'
    verbose_name_plural = 'Customers'

class Profile(models.Model):

first_name = models.CharField(max_length=50, null=True, blank=True)
last_name = models.CharField(max_length=50, null=True, blank=True)
phone = models.CharField(max_length=10, default='', null=True, blank=True)
email = models.EmailField(primary_key=True, unique=True, validators=[validators.EmailValidator()])
password = models.CharField(max_length=100, null=True, blank=True)
# Add a photo field
owner = models.OneToOneField(Customer, related_name='profile_owner',
                             on_delete=models.SET_NULL, null=True)
username = models.CharField(max_length=30, null=True, blank=True,
                            validators=[UnicodeUsernameValidator()])
date_created = models.DateTimeField(auto_now_add=True)

class Meta:
    verbose_name = 'Profile'
    verbose_name_plural = 'Profiles'

Если вам нужны еще какие-либо подробности, я могу предоставить их вам в комментариях.

Вы не можете иметь оба пути OneToOneField. Выберите один путь

Если вы удалите поле Customer из profile, то у вас останется возможность вызвать отношение с:

customer = Customer.objects.get(id=1)
customer.profile   # that will call Customer's related Profile object

Предполагается, что вы измените related_name='profile_owner' на более простой related_name='profile'.

Читать больше о OneToOneRelationships.

Вернуться на верх