没有这样的表格:时间表\玩家重量提升

2024-06-25 22:47:03 发布

您现在位置:Python中文网/ 问答频道 /正文

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文件中的型号播放器重量提升。但当我运行它时,它会显示“没有这样的表:Schedule_playerweightlifting”,下面是我相应的模型:

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 makemigrationspython manage.py migrate命令时,终端上没有显示任何类型的错误,但当我打开admin时,它只是显示,没有这样的表,可能的原因是什么?我甚至尝试了Python manage.py migrate--运行syncdb任何帮助都将不胜感激!谢谢:)


Tags: pyselftruedefaultmanageadmintimeon
1条回答
网友
1楼 · 发布于 2024-06-25 22:47:03

Admin Screenshot

Aadil,我用了你的代码,在我这边似乎没有问题

我认为您正在使用数据库中的python manage.py inspectdb > models.py创建这些模型。 有时,数据类型会有点纠结,我们无法在Date模型中得到我们想要的,应该有DateField或者DateTimeField也应该是default 如下面代码中所述或{}

顺便说一句,我的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']

如果问题仍然存在,请尝试先创建模型,然后通过迁移创建数据库。看看这是否有效

相关问题 更多 >