В миграциях отсутствует внешний ключ - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть модель trade / Trade .py:

from datetime import datetime
from django.db import models
from home.models import Player


class Trade(models.Model):
    buyer = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='buyer'),
    buyee = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='buyee'),
    date = models.DateTimeField(default=datetime.now)

Модель дома / Player .py:

from django.contrib.auth.models import User
from django.db import models
class Player(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, related_name='user')
    value = models.IntegerField(default=1500)
    owner = models.OneToOneField(User, on_delete=models.CASCADE, related_name='owner', blank=True, null=True)

A Торговля происходит между 2 Player s. То есть поля покупатель и покупатель в Торговля являются внешними ключами Player .

Теперь, когда явыполнить миграцию для модели Trade , вот что я получаю:

class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Trade',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('date', models.DateTimeField(default=datetime.datetime.now)),
            ],
        ),
    ]

Почему в миграции отсутствуют 2 поля внешнего ключа?

1 Ответ

2 голосов
/ 30 сентября 2019

Это произошло из-за запятой в конце каждого поля в классе Trade. Уберите запятые и все заработает.

class Trade(models.Model):
    buyer = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='buyer')
    buyee = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='buyee')
    date = models.DateTimeField(default=datetime.now)
...