J'ai croisé ce problème à plusieurs reprises, mais je n'ai pas essayé de creuser plus profondément à ce sujet. Maintenant, je comprends le problème principal.
Cette fois, mon problème importait des sérialiseurs (django et restframework) à partir de différents modules tels que les suivants:
from rest_framework import serializers
from common import serializers as srlz
from prices import models as mdlpri
from products import serializers as srlzprod
J'avais un problème comme celui-ci:
from product import serializers as srlzprod
ModuleNotFoundError: No module named 'product'
Ce que je voulais accomplir était le suivant:
class CampaignsProductsSerializers(srlz.DynamicFieldsModelSerializer):
bank_name = serializers.CharField(trim_whitespace=True,)
coupon_type = serializers.SerializerMethodField()
promotion_description = serializers.SerializerMethodField()
product = srlzprod.ProductsSerializers(fields=['id','name',],read_only=True,)
Donc, comme mentionné par les lignes ci-dessus comment le résoudre (importation de niveau supérieur), je procède aux modifications suivantes:
product = srlzprod.ProductsSerializers(fields=['id','name',],read_only=True,)
product = serializers.SerializerMethodField()
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
Par conséquent, django runserver a été exécuté sans problème:
./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.
L'état final des lignes de code était le suivant:
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
J'espère que cela pourrait être utile pour tout le monde.
Salutations,