Django&Postgres:持久化“ProgrammingError:列不存在”

2024-07-02 13:20:11 发布

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

我知道以前有人问过这个问题,但我已经尝试了答案中提出的所有建议,似乎没有一个有效。在

问题:在我的Django项目中,我有一个名为“Accomm”的模型类,其中存储了许多对象。在我试图检索“Accomm”的一个或多个实例的网页上,会引发以下错误。。。在

ProgrammingError at /
column objects_accomm.description does not exist
LINE 1: ...omm"."id", "objects_accomm"."mapped_location_id", "objects_a...

当我将一个新字段“description”迁移到“Accomm”模型时,这个问题就开始出现了。在

尝试过的解决方案:我尝试做以下事情。。。清除所有Django迁移(使用--zero和--empty命令);清除数据库(postgresql10);清除迁移和数据库;更改Django项目中我的数据库的名称设置.py文件。这些似乎都不管用。我还学习了教程herehere和{a3}。在

完全错误:

^{pr2}$

编辑: 模型.py对于“Accomm”:

class Accomm(models.Model):
    mapped_location=models.ForeignKey(Location,related_name='l_accomms',null=True,blank=True,on_delete=models.SET_NULL)
    description=models.CharField(max_length=1000,null=True,blank=True)
    creator=models.OneToOneField(accountmodels.UserProfileModel,related_name='u_creator',null=True,on_delete=models.SET_NULL,blank=True)
    slug_key=models.SlugField(unique=True)
    is_active=models.BooleanField(default=False)

在视图.py公司名称:

def home(request):
    user = request.user
    accomm = Accomm.objects.annotate(img_count=models.Count('a_image')).filter(img_count__gte=1)[:6]
    return render(request, 'home.html', {'accomm':accomm})

除了这里提出的解决方案,还有其他的想法吗?在


Tags: 项目djangopy模型数据库trueobjectsmodels
1条回答
网友
1楼 · 发布于 2024-07-02 13:20:11

当我的迁移变得不稳定时,我喜欢尝试的是:

python manage.py makemigrations
python manage.py migrate  fake

所以这会使你的模型看起来像是添加了列,所以从这里我将模型剪切并粘贴到一个临时文件中,保存模型并定期运行迁移,这将删除所有的模型。然后将模型粘贴回模型.py再运行一次迁移。这似乎对我有用,也许有更好的方法来管理它,但是我对django还是比较陌生的,因为我刚刚完成了我在django中的第一个大项目。真的希望这有帮助,如果不让我知道,我可能有其他东西给你!在

相关问题 更多 >