Django остальные рамки обрабатывают дубликаты - PullRequest
0 голосов
/ 16 апреля 2020


Я создаю приложение, в котором я использую django в качестве бэкэнда и реагирую на native в качестве внешнего интерфейса.
Сейчас я создаю компонент входа в систему, который обеспечивает вход в Facebook и Google, а данные, возвращаемые из их API, хранятся в моей локальной базе данных через DRF. Проблема в том, что когда пользователь выходит из системы и снова входит в систему, DRF создает другую запись с точно такой же информацией. Теперь вопрос в том, должен ли я справиться с этим в бэкэнде (и если да, то как) или во внешнем интерфейсе (здесь я знаю, как, но я думаю, что это не очень хорошая идея)

Вот мои django модель, вид и сериализатор:

class RegisteredUsers(models.Model):
    userId = models.CharField(max_length=256)
    user_name = models.CharField(max_length=256)
    user_mail = models.CharField(max_length=256)
    photo = models.CharField(max_length=256)

    def __str__(self):
        return self.user_name

class RegisteredUsersViewSet(viewsets.ModelViewSet):
    queryset = RegisteredUsers.objects.all()
    serializer_class = RegisteredUsersSerializer

    def get_queryset(self):
        mail = self.request.query_params.get('user_mail', None)
        if mail:
            qs = RegisteredUsers.objects.all().filter(user_mail=mail)
        else:
            qs = super().get_queryset()
        return qs

class RegisteredUsersSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = RegisteredUsers
        fields = ('userId', 'user_name', 'user_mail', 'photo')
        lookup_field='user_mail'
        extra_kwargs = {
            'url': {'lookup_field': 'user_mail'}
        }

как я могу проверить, что эта учетная запись уже существует, и просто войти в систему пользователя?

...