Как сделать фильтрацию в Django Rest ModelViewset - PullRequest
1 голос
/ 03 октября 2019

У меня есть API регистрации. Я добавляю регистрационные данные, данные добавляются нормально, но я не хочу добавлять одни и те же данные несколько раз. Например, username = "abc", email = "abc@example.com", phone_no = "1234567890" данные уже присутствуют вбаза данных, но его добавление тех же данных снова и снова. Я пытаюсь избежать этого. Как это сделать

modes.py

class Signup(models.Model):
    email = models.EmailField(max_length=50, blank=True, null=True)
    phone_number = models.CharField(max_length=12, blank=True, null=True)
    username = models.CharField(max_length=300, blank=True, null=True)
    password = models.CharField(max_length=50, blank=True, null=True)

serializers.py

class SignupSerializer(serializers.ModelSerializer):

    class Meta:
        model = Signup
        fields = '__all__'

views.py

class SignupViews(viewsets.ModelViewSet):
    queryset = Signup.objects.all()
    serializer_class = SignupSerializer

urls.py

router = routers.DefaultRouter()
router.register('api/signup', views.SignupViews)

urlpatterns = [
    path('', include(router.urls))
]

1 Ответ

1 голос
/ 03 октября 2019

Просто добавьте уникальное ограничение к username:

class Signup(models.Model):
    email = models.EmailField(max_length=50)
    phone_number = models.CharField(max_length=12)
    username = models.CharField(max_length=255, unique=True)
    password = models.CharField(max_length=50)

Обратите внимание, что вы не можете иметь max_length больше 255.

Кроме того, вы не можете иметьуникальное ограничение для CharField с пустым значением = True

Наконец, почему бы не использовать для этого модель Django User?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...