如何在Django Rest ModelViewset中进行过滤
我已经注册了api。我正在添加注册详细信息,数据添加很好,但我不想多次添加相同的数据。例如username=“abc”,email=”abc@example.com,phone_no=“1234567890”数据库中已存在数据,但它会不断添加相同的数据。我尽量避免这样。怎么做 模式.py如何在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
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
模型呢 那么,您想要的基本上是在注册后更新数据?我不明白你的问题为什么不使用默认的DjangoUser
model?@HigorRossato我有注册api。我不想多次添加相同的用户名。