我正在try 定义非数据库模型(头寸和投资组合).

# models.py
class Position(models.Model):
    code = None
    price = None
    value = None

    class Meta:
        managed = False

    def __init__(self, code, price, value):
        self.code = code
        self.price = price
        self.value = value

class Portfolio(models.Model):
    positions = []

    class Meta:
        managed = False

    def add(self, position):
        self.positions.append(position)


class PositionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Position
        fields = ['code', 'price', 'value']

# serializers.py
class PortfolioSerializer(serializers.ModelSerializer):
    positions = PositionSerializer(many=True)

    class Meta:
        model = Portfolio
        fields = ['positions']


# views.py
class PortfolioDetail(APIView):
    """
    List all portfolios, or create a new portfolio.
    """
    def get(self, request, analyzer_id, date, format=None):
        logger.warning('requesting portfolio using {} on {}'.format(analyzer_id, date))
        portfolio = Portfolio()
        portfolio.add(Position('600519', 1900.0, 50000))
        serializer = PortfolioSerializer(portfolio)
        return Response(serializer.data)

问题是,每次我刷新页面,投资组合中的职位都会增加.这意味着页面刷新后将有multiple个职位.为什么?

推荐答案

将它们存储在Portfolio类的positions列表中,所以在memory中,只要不重新启动服务器,它就会存储在内存中.

这样做的另一个问题是,随着负载的增加,通常有multiple个进程运行来为客户端(S)提供服务,这意味着如果您发出两个请求,一次它将使用one个进程的列表,而在另一个请求中它将使用另一个进程,从而使用另一个列表.

数据库旨在允许并行查询,并让数据在多次运行时保持不变.

Django相关问答推荐

使用FormWizard将信息从视图传递到表单

DRF中是否有有效的更新有序数据的算法?

Django www.example.com从常量列表中删除值

Django没有显示变量

Urls.py中路径**kwargs的Django翻译?

Django REST序列化程序TO_REATION失败

如何使更新记录在 Django 模型中传递信号?

测试 - 两个类共享相同的登录代码,但它只能在一个类中工作

Django - 站点匹配查询不存在

Django 自定义管理器 - 如何仅返回登录用户创建的对象?

django- nginx: [emerg] open() "/etc/nginx/proxy_params" 在 /etc/nginx/sites-enabled/myproject:11 中失败(2:没有这样的文件或目录)

如何从 django 的 db 模型中获取字段类型字符串

在 Django 中扩展 urlize

无效的块标签: static

django 管理员操作而不 Select 对象

如何在不同的元素上添加注释?

响应发送到客户端后在 Django 中执行代码

如何测试 Django QuerySets 是否相等?

python/django中setattr和对象操作的区别

Django Debug Toolbar:了解时间面板( time panel)