python - Django 不在数据库中创建对象

标签 python django postgresql

我不确定哪里出了问题。
我试过 migrate/makemigrations 但这没有帮助,我在 virtualenv 中工作。
我的模型.py

    from django.db import models
import re


# Create your models here.
class Currency(models.Model):
    def __str__(self):
        return self.short
    name = models.CharField(max_length=32, null=True, blank=True)
    country = models.CharField(max_length=50, null=True, blank=True)
    short = models.CharField(max_length=10, null=True, blank=True)


class Source(models.Model):
    def __str__(self):
        return self.name + '({}...)'.format(self.url[:20])
    url = models.URLField()
    name = models.CharField(max_length=250, verbose_name='Source_name')
    timestamp = models.DateTimeField(auto_now_add=True)
    currency = models.ForeignKey(Currency)

    def save(self, *args, **kwargs):
        self.name = ''.join(re.sub('\s+', ' ', self.name).strip())
        super(Source, self).save()


class Product(models.Model):
    def __str__(self):
        return self.name
    name = models.CharField(max_length=250, blank=False)
    prices = models.ManyToManyField(to='Price', blank=True)
    date_creation = models.DateField(auto_now_add=True)
    prod_code = models.CharField(max_length=250, blank=True, null=True)

    def save(self, *args, **kwargs):
        self.name = ''.join(re.sub('\s+', ' ', self.name).strip())
        super(Product, self).save()  

创建对象的函数

def from_csv_to_db(csv_name):  # empty DB
try:
    df = pd.read_csv(csv_name, sep=';')
except FileNotFoundError:
    return ('Please input correct path to csv file or check spelling. Process finished')
for i, row in df.iterrows():
    Currency.objects.get_or_create(short=row['source__currency__short'], id=row['source__currency_id'])
    Product.objects.get_or_create(id=row['product__id'], name=row['product__name'])
    Source.objects.get_or_create(id=row['source__id'], name=row['source__name'], url = row['source__url'],
                                 currency_id=row['source__currency_id'])
    Parser.objects.get_or_create(script=row['script'], boolean=row['boolean'], product_id=row['product__id'],
                                 source_id=row['source__id'])
return 'Done'

但是,django 确实通过查询集显示了我的模型对象 在 python manage.py shell

from Parser.models import *
Product.objects.all()  
<QuerySet [<Product: test product>, <Product: iphone>, <Product: 
Mac>, <Product: iPad>]>  

但是当我运行 python manage.py dbshel​​l > select * from Parser_product;
我得到 错误:关系“parser_product”不存在

我在 Debian 上使用 Docker,这是远程完成的。

最佳答案

很高兴我通过电报中的 python 聊天找到了解决方案。

答案将是一个原始查询

我必须让它 SELECT * FROM "Parser_product" <注意引号。

多亏了这个answer

关于python - Django 不在数据库中创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49778816/

相关文章:

python - 如何在 django 上为 Ext.data.TreeStore 的选定值正确创建响应

php - postgresql/php 中的 SQL 语法错误

python - 如何在 Windows 10 中使用 pip 安装 tkinter

python - 使用两个数据帧之间的 "VLOOKUP"创建新数据帧

python - 将代码放在 python 配置文件中是否有礼貌?

excel - 如何将 latex 和 excel 连接到 postgres?

django - 如何使用 django 使用 datefield 检索数据?

python - 如何通过ffmpeg-python获取service_name和程序列表

python - 用 ggplot 绘制 2 geom_line()

python - 表单背后的逻辑(request.POST 或 None)