나는이 문제와 여러 번 교차했지만 그것에 대해 더 깊이 파고 들지 않았습니다. 이제 주요 문제를 이해합니다.
이번에 내 문제는 다음과 같은 다른 모듈에서 Serializers (django 및 restframework)를 가져 오는 것입니다.
from rest_framework import serializers
from common import serializers as srlz
from prices import models as mdlpri
# the line below was the problem 'srlzprod'
from products import serializers as srlzprod
나는 이와 같은 문제를 겪고 있었다 :
from product import serializers as srlzprod
ModuleNotFoundError: No module named 'product'
내가 성취하고 싶었던 것은 다음과 같습니다.
class CampaignsProductsSerializers(srlz.DynamicFieldsModelSerializer):
bank_name = serializers.CharField(trim_whitespace=True,)
coupon_type = serializers.SerializerMethodField()
promotion_description = serializers.SerializerMethodField()
# the nested relation of the line below
product = srlzprod.ProductsSerializers(fields=['id','name',],read_only=True,)
따라서 위의 줄에서 해결 방법 (최상위 가져 오기)에서 언급했듯이 다음 변경을 수행합니다.
# change
product = srlzprod.ProductsSerializers(fields=['id','name',],read_only=True,)
# by
product = serializers.SerializerMethodField()
# and create the following method and call from there the required serializer class
def get_product(self, obj):
from products import serializers as srlzprod
p_fields = ['id', 'name', ]
return srlzprod.ProductsSerializers(
obj.product, fields=p_fields, many=False,
).data
따라서 django runserver는 문제없이 실행되었습니다.
./project/settings/manage.py runserver 0:8002 --settings=settings_development_mlazo
Performing system checks...
System check identified no issues (0 silenced).
April 25, 2020 - 13:31:56
Django version 2.0.7, using settings 'settings_development_mlazo'
Starting development server at http://0:8002/
Quit the server with CONTROL-C.
코드 라인의 최종 상태는 다음과 같습니다.
from rest_framework import serializers
from common import serializers as srlz
from prices import models as mdlpri
class CampaignsProductsSerializers(srlz.DynamicFieldsModelSerializer):
bank_name = serializers.CharField(trim_whitespace=True,)
coupon_type = serializers.SerializerMethodField()
promotion_description = serializers.SerializerMethodField()
product = serializers.SerializerMethodField()
class Meta:
model = mdlpri.CampaignsProducts
fields = '__all__'
def get_product(self, obj):
from products import serializers as srlzprod
p_fields = ['id', 'name', ]
return srlzprod.ProductsSerializers(
obj.product, fields=p_fields, many=False,
).data
이것이 다른 모든 사람들에게 도움이되기를 바랍니다.
인사말,