嗨,我正在尝试将Django后端和postgresql数据库组合在一起。
这是我的数据库表:
我在Django中的models.py
from django.db import models
# Create your models here.
class Categories(models.Model):
id = models.IntegerField(primary_key=True)
name = models.TextField(null=True, unique=True)
class Meta:
db_table = 'categories'
def __str__(self):
return self.name
class Website(models.Model):
id = models.IntegerField(primary_key=True)
site = models.TextField(null=True, unique=True)
class Meta:
db_table= 'website'
def __str__(self):
return self.site
class Discount(models.Model):
id = models.IntegerField(primary_key=True)
product_name = models.TextField()
product_price = models.TextField()
product_old_price = models.TextField()
product_link = models.TextField()
category_name = models.ForeignKey(Categories, on_delete=models.CASCADE, null=True, to_field='name')
product_site = models.ForeignKey(Website, on_delete=models.CASCADE, null=True, to_field='site')
product_image = models.TextField()
class Meta:
db_table = 'discount'
def __str__(self):
return self.product_name
在下面的教程中,我设法将Django和postgresql链接在一起,但是当我第一次尝试迁移数据库时,就出现了此错误:
列折扣.category_name_id不存在第1行: ...“。” product_old_price“,”折扣“。” product_link“,”折扣“ ... ^提示:也许您打算引用“ discount.category_name”列。
我虽然将我的外键从Discount.category_name链接到Categories.name,并且在ForeignKeyField中使用to_field ='name',但是以某种方式使用了Discount.category_name_id?我不知道category_name_id在哪里,它不在我的表中
任何帮助将不胜感激!
答案 0 :(得分:1)
以下字段未反映在数据库中,请检查数据库字段名称(如果没有),然后创建一个虚拟迁移并为此编写脚本
category_name = models.ForeignKey(Categories, on_delete=models.CASCADE, null=True, to_field='name')
答案 1 :(得分:0)
我设法通过添加
对其进行了修复db_column ='类别名称'
到ForeignKey字段
似乎我需要在ORM的Postgresql表中具体说明实际上是外键的列
category_name = models.ForeignKey(Categories, on_delete=models.CASCADE, null=True, to_field='name', db_column='category_name')
product_site = models.ForeignKey(Website, on_delete=models.CASCADE, null=True, to_field='site', db_column='product_site')