首页 > 解决方案 > 迁移前使用模型信息

问题描述

我正在尝试在 DRF 中编写一个序列化程序,它以前使用另一个作为选择列表。但是,当我尝试迁移(最初)时,我收到一个错误,因为序列化程序试图在创建表之前查询表:

from api.models.stock import Stock
from rest_framework import serializers

class ChartSerializer(serializers.Serializer):

    symbol = serializers.ChoiceField(
        choices=Stock.objects.values_list('symbol', flat=True))

    option = serializers.ChoiceField(
        choices=['sparkline', '1d', '1w', '1m', '6m', '1y', '2y'])

错误是:

django.db.utils.ProgrammingError:关系“api_stock”不存在第 1 行:从“api_stock”中选择“api_stock”。“symbol”

我怎样才能改变这个?我是否需要检查Stock之前是否已创建?

标签: pythondjangodjango-rest-framework

解决方案


我通过使用这样的 SlugRelatedField 解决了我的问题:

symbol = serializers.SlugRelatedField(
    queryset=Stock.objects.all(), slug_field='symbol')

推荐阅读