代码之家  ›  专栏  ›  技术社区  ›  Aadil Hoda

没有这样的桌子:安排运动员举重

  •  0
  • Aadil Hoda  · 技术社区  · 6 年前
    migrations.CreateModel(
        name='PlayerWeightLifting',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('time', models.IntegerField(default=-1)),
            ('medal', models.CharField(blank=True, choices=[('GOLD', 'GOLD'), ('SILVER', 'SILVER'), ('BRONZE', 'BRONZE'), ('FOURTH', 'FOURTH')], max_length=256)),
            ('player', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Schedule.Player')),
        ],
        options={
            'ordering': ['time'],
        },
    ),
    

    这是我的模型 运动员举重 来自0001_initial.py文件。但当我运行它时,它显示“没有这样的表:时间表\运动员举重”,下面是我的对应模型:

    class PlayerWeightLifting(models.Model):
        player = models.ForeignKey(Player, on_delete=models.CASCADE)
        weightlifting = models.ForeignKey(WeightLifting, on_delete=models.CASCADE, default='')
        time = models.IntegerField(default=-1)
        medal = models.CharField(max_length=256,blank=True, choices=MEDAL_CHOICES)
    
        def __str__(self):
            return str(self.weightlifting) + str(" ") + str(self.player)
    
        class Meta:
            ordering = ['time']
    

    我有另一个类似类型的模型类,它工作正常,我被困在这个数据库中。帮助我!

    这是admin.py中的部分:

    admin.site.register(PlayerWeightLifting)
    

    运行时终端上没有显示任何类型的错误 python manage.py生成迁移 python manage.py迁移 命令,但当我打开admin时,它只是显示,没有这样的表,可能的原因是什么?我甚至试过 python manage.py migrate--运行syncdb 任何帮助都将不胜感激!谢谢:)

    1 回复  |  直到 6 年前
        1
  •  1
  •   ans2human    6 年前

    python manage.py inspectdb > models.py Date DateField DateTimeField default NONE

    Models.py

    from django.db import models
    
    class Player(models.Model):
        pass
    class WeightLifting(models.Model):
        pass
    
    class PlayerWeightLifting(models.Model):
        player = models.ForeignKey(Player, on_delete=models.CASCADE)
        weightlifting = models.ForeignKey(WeightLifting, on_delete=models.CASCADE,default='')
        time = models.IntegerField(default='')
        medal = models.CharField(max_length=256,blank=True)
    
    def __str__(self):
        return str(self.weightlifting) + str(" ") + str(self.player)
    
    class Meta:
        ordering = ['time']