python – Django REST框架建立自定義使用者
我在Django領域是新的,但看到有很多“魔術”在那裡.我正在使用Django REST框架並建立允許免費使用者註冊的應用程式.我的使用者需要一些Django使用者不可用的其他欄位.所以我googled擴充套件使用者.有一個想法,應該通過建立這樣的東西來完成
class MyUser(models.Model): user = models.ForeignKey(User, unique=True) city = models.CharField(max_length=50, blank=True, default='')
這很好,但我有這個序列化器
class UserSerializer(serializers.ModelSerializer): class Meta: model = MyUser fields = ('id', 'username', 'password', 'first_name', 'last_name', 'email', 'city')
所以,問題是這個序列器在這裡做了一些“魔術”.它試圖找出模型應該有哪些領域?
我想讓使用者在這裡列出欄位,這些欄位在使用者和“城市”是新的自定義欄位. Serializer沒有得到它應該在使用者模型內.
我在這裡缺少什麼?如何告訴這個序列器,我想要一些內部使用者?我也需要克里特島的使用者.
好的,幾件事情.您要為您的使用者型號擴充套件建立一個OneToOneField.
class MyUser(models.Model): user = models.OneToOneField(User) city = models.CharField(max_length=50, blank=True, default='')
現在,Django Rest Framework的強大功能是可以構建序列化程式,以便在序列化時從這兩種模型中獲取資料.
class UserSerializer(serializers.ModelSerializer): city = serializers.CharField(source='myuser.city') class Meta: model = User fields = ('id', 'username', 'password', 'first_name', 'last_name', 'email', 'city')
最後,我們是您建立使用者,因為您正在使用自定義欄位,您需要實現自己的restore_object(),它們根據輸入資料構建兩個模型.
此外,在Django中建立使用者有所不同,您需要呼叫create_user()並提供一個雜湊的密碼,因此它不像從序列器儲存欄位那麼簡單.
程式碼日誌版權宣告:
翻譯自:http://stackoverflow.com/questions/19772457/django-rest-framework-creating-custom-user