如何在Django Rest ModelViewset中进行过滤

如何在Django Rest ModelViewset中进行过滤,django,django-rest-framework,Django,Django Rest Framework,我已经注册了api。我正在添加注册详细信息,数据添加很好,但我不想多次添加相同的数据。例如username=“abc”,email=”abc@example.com,phone_no=“1234567890”数据库中已存在数据,但它会不断添加相同的数据。我尽量避免这样。怎么做 模式.py class Signup(models.Model): email = models.EmailField(max_length=50, blank=True, null=True) phone

我已经注册了api。我正在添加注册详细信息,数据添加很好,但我不想多次添加相同的数据。例如username=“abc”,email=”abc@example.com,phone_no=“1234567890”数据库中已存在数据,但它会不断添加相同的数据。我尽量避免这样。怎么做

模式.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)
序列化程序.py

class SignupSerializer(serializers.ModelSerializer):

    class Meta:
        model = Signup
        fields = '__all__'
views.py

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

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

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

只需将唯一约束添加到
用户名

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

此外,不能对具有blank=True的
CharField
具有唯一约束


最后,为什么不为此使用Django
User
模型呢

那么,您想要的基本上是在注册后更新数据?我不明白你的问题为什么不使用默认的Django
User
model?@HigorRossato我有注册api。我不想多次添加相同的用户名。