Python 迁移中缺少外键

Python 迁移中缺少外键,python,django,django-models,Python,Django,Django Models,我有模型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.Forei

我有模型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)
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)
模型主页/播放器.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)
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)
一笔交易发生在两名玩家之间。也就是说,交易中的买方和买方字段是玩家的外键

现在,当我为交易模型进行迁移时,我得到的是:

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)),
            ],
        ),
    ]

为什么迁移过程中缺少两个外键字段?

这是因为
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)

这是因为
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)

你是否在settings.pyit中注册了你的播放器模型应用程序?我认为应该创建它们,因为django不会添加迁移,除非你在某个地方使用它(一个简单的导入),请尝试将这两个模型注册到admin并尝试运行迁移again@c.greyTrade和Player在不同的应用程序中。他们都是在设置中注册的。@YugandharChaudhari试过了。还是一样。@YugandharChaudhari恐怕你的建议是基于一个严重的误解。迁移仅在您请求时“创建”,仅在您请求时“使用”,并且在所有情况下都与管理员完全无关。您是否在settings.pyit中注册了您的播放器型号应用程序?我认为应该创建它们,因为django在您使用迁移之前不会添加迁移(一个简单的导入)尝试向管理员注册这两个模型并尝试运行迁移again@c.greyTrade和Player在不同的应用程序中。他们都是在设置中注册的。@YugandharChaudhari试过了。还是一样。@YugandharChaudhari恐怕你的建议是基于一个严重的误解。迁移仅在您请求时“创建”,仅在您请求时“使用”,并且在所有情况下都与管理员完全无关。