簡體   English   中英

Django Rest Framework - 使用 Djoser “無法創建帳戶”

[英]Django Rest Framework - "Unable to create account" with Djoser

我對用戶注冊有一些問題。

我正在使用 Sunscrapers 的庫 Djoser。

在從 Postman 創建新用戶期間,我收到“無法創建帳戶”的響應。

在此處輸入圖片說明

在我的終端(docker)中,我得到以下信息:

ERROR: null value in column "country_id" violates not-null constraint

DETAIL: Failing row contains (53, null, , t, jaroslawpsikuta1@gmail.com, pbkdf2_sha256$180000$p2Q8c4Du3uLF$o56YHGCS0ZutasVhevPXl8rrMG/VYL..., , null, , , , 2020-03-10 10:06:48.053201+00, null, f).

STATEMENT: INSERT INTO "accounts_user" ("last_login", "email", "is_superuser", "is_active", "password", "first_name", "last_name", "date_of_birth", "description", "address", "phone", "created_at", "country_id") VALUES (NULL, 'jaroslawpsikuta1@gmail.com', false, true, 'pbkdf2_sha256$180000$p2Q8c4Du3uLF$o56YHGCS0ZutasVhevPXl8rrMG/VYLiyzTB6LrSY4ws=', '', '', NULL, '', '', '', '2020-03-10T10:06:48.053201+00:00'::timestamptz, NULL) RETURNING "accounts_user"."id"

似乎 Djoser 沒有看到我的請求正文,它試圖將空值或空值放入數據庫中。 直到現在,我嘗試了以下解決方案: 自定義 djoser 創建用戶端點......但它沒有用。

代碼:

序列化程序.py

class UserSerializer(serializers.ModelSerializer):
    password = serializers.CharField(write_only=True)

    class Meta:
        model = User
        fields = ['id', 'email', 'password', 'first_name', 'last_name', 'date_of_birth', 'description', 'address', 'phone', 'created_at', 'last_login', 'country']

    def create(self, validated_data):
        password = validated_data.pop('password')
        user = User(**validated_data)
        user.set_password(password)
        user.save()
        return user

視圖.py

class UserViewSet(ModelViewSet):
    serializer_class = UserSerializer
    queryset = User.objects.all()
    permission_classes = []

你有什么想法如何解決嗎? 也許我忘記了什么? 謝謝你的幫助:) 最好的問候,

已解決:我需要在模型中覆蓋 User REQUIRED_FIELDS 以使 Djoser 在序列化程序中使用它。

class User(AbstractUser):
    username_validator = None
    username = None
    ...

    USERNAME_FIELD = 'email' 
    REQUIRED_FIELDS = ['first_name', 'last_name', 'date_of_birth', 'address', 'phone', 'country']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM