Я использую Django 2.2 и имею два приложения authentication
и multi_users
Существует UserSerializer
в authentication
приложении. Модель multi_users
имеет поле shared_user
и, таким образом, использует UserSerializer
в multi_users.serializers
для сериализации поля shared_user
.
Теперь в multi_users.serializers
есть класс AccessLevelPermissionSerializer
, который Мне нужно в authentication.serializers
для сериализатора permissions
пользователя.
Это выдаёт ошибку как
ImportError: cannot import name 'AccessLevelPermissionSerializer' from 'multi_users.serializers' (/app/multi_users/serializers.py)
authentication.serializers
from authentication.models import Profile, User, Preference
class UserBaseSerializer(UserDetailsSerializer):
class Meta(UserDetailsSerializer.Meta):
fields = ('email', 'first_name', 'last_name')
class UserSerializer(UserBaseSerializer):
from multi_users.serializers import AccessLevelPermissionSerializer
permissions = AccessLevelPermissionSerializer(required=False)
class Meta(UserDetailsSerializer.Meta):
fields = UserBaseSerializer.Meta.fields + (
'permissions'
)
multi_users.serializers
from authentication.serializers import UserBaseSerializer
class SharedPermissionSerializer(serializers.ModelSerializer):
class Meta:
model = SharedPermission
fields = [
'code',
'name',
]
class AccessLevelPermissionBaseSerializer(serializers.ModelSerializer):
permission = SharedPermissionSerializer(required=False)
class Meta:
model = AccessLevelPermission
fields = [
'value',
'permission'
]
# Import this in the `authentication.serializers`
class AccessLevelPermissionSerializer(AccessLevelPermissionBaseSerializer):
pass
class MultiUserSerializer(serializers.ModelSerializer):
shared_user = UserBaseSerializer(required=False) # Use from `authentication.serializers`
class Meta:
model = MultiUser
depth = 1
fields = [
'id',
'shared_user',
'access_level',
]
Как решить эту проблему циклического импорта?