Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django扩展模型_Python_Django_Django Models - Fatal编程技术网

Python Django扩展模型

Python Django扩展模型,python,django,django-models,Python,Django,Django Models,我只是想知道如何在Django中扩展模型,而不需要创建新的数据库表或行 我有两个模型。SSALi具有唯一的票号和日期,NELi具有唯一的票号和日期。我想要一个名为NN_feed的模型或函数,它具有两个模型的所有属性,例如情绪和预测 下面的工作,但它已经创建了一个新的表,我需要加入每一行和日期 有没有一种方法可以做到这一点,而不需要额外的数据库表,只需从现有数据中提取数据 需要明确的是,SSALiReport和NELiReport数据库需要保持不变。我只想把数据拉到第三个模型中,在一个地方查看所有

我只是想知道如何在Django中扩展模型,而不需要创建新的数据库表或行

我有两个模型。SSALi具有唯一的票号和日期,NELi具有唯一的票号和日期。我想要一个名为NN_feed的模型或函数,它具有两个模型的所有属性,例如情绪和预测

下面的工作,但它已经创建了一个新的表,我需要加入每一行和日期

有没有一种方法可以做到这一点,而不需要额外的数据库表,只需从现有数据中提取数据

需要明确的是,SSALiReport和NELiReport数据库需要保持不变。我只想把数据拉到第三个模型中,在一个地方查看所有数据

from django.contrib.postgres.fields import JSONField
from django.db import models
import datetime

# Create your models here.

class SSALiReport(models.Model):

    date = models.DateField()
    ticker = models.CharField(max_length=10,default='NA')
    market = models.CharField(max_length=250,default='NA')

    price = models.FloatField()
    prediction = models.FloatField()


    def __str__(self):
        return str(self.date) + " - " + str(self.ticker)


class NELiReport(models.Model):

    date = models.DateField()
    ticker = models.CharField(max_length=10,default='NA')
    sentiment = models.FloatField(default='0.0')
    clout = models.FloatField(default='0.0')
    top_news = JSONField(default='{}')


    def __str__(self):
        return str(self.date) + " - " + str(self.ticker)

class TopStock(models.Model):

    ticker = models.CharField(max_length=10,default='NA')
    name = models.CharField(max_length=200,default='NA')
    current_price = models.FloatField(default='0.0')
    date = models.DateField(default=datetime.date.today)

    # need to add company name

    def __str__(self):
        return str(self.date) + " - " + str(self.ticker)


class NNFeed(models.Model):

    NELi = models.OneToOneField(NELi_Report, on_delete=models.CASCADE)
    SSALi = models.OneToOneField(SSALi_Report, on_delete=models.CASCADE)
这个SQL脚本可以工作

SELECT *
FROM api_neli_report, api_ssali_report
WHERE api_neli_report.ticker = api_ssali_report.ticker
AND api_neli_report.date =  api_ssali_report.date

django的等价物是什么

对于任何有相同问题的人,请参见下面我是如何解决的

只是通过使用原始sql的视图实现了这一点

qs = SSALi_Report.objects.raw("SELECT * FROM api_neli_report, api_ssali_report 
                               WHERE api_neli_report.ticker = api_ssali_report.ticker 
                               AND api_neli_report.date =  api_ssali_report.date")

for row in qs:
   output = {
      "date": row.date,
      "market": row.market,
      "prediction": row.prediction,
      "price": row.price,
      "ticker": row.ticker,
      "clout": row.clout,
      "sentiment": row.sentiment

    }

 return output

请修正你的缩进。你上一个型号的名字是什么?您当前没有扩展任何模型,但如果扩展了,则将
abstract
设置为
True
会阻止它创建单独的表。如果不创建新表,请查看将字段放置在何处,例如情绪和预测?请按照Python编码约定进行编码。当我读代码的时候,我的眼睛会痛。类名应该在
PascalCase
-
NELiReport
中,而不是
neliu Report
;属性名称在
snake\u案例中
-
current\u price
而不是
currentPrice
。嘿,Alexandr(SSALi\u报告、NELi\u报告)是由于其他原因而存在的报告。而不是在当前拥有所有数据时创建数据库表。我想把它当作一个物体来拉,只是好奇而已。您希望子模型同时读取和写入基本模型还是仅读取?