我想用特定于应用程序的属性扩展用户模型,在这种情况下,我只是用extA
和代替它们extB
。我已经建立了一个扩展用户模型的模型,并且为该模型创建了一个简单的序列化器。现在,我不确定如何使用额外的字段创建用户。
models.py
class UserDetails(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
extA = models.IntegerField(null=True)
extB = models.IntegerField(null=True)
@receiver(post_save, sender=User)
def handle_user_save(sender, instance, created, **kwargs):
if created:
UserDetails.objects.create(user=instance)
serializers.py
class UserDetailsSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email', 'extA', 'extB')
views.py
class UserDetailsView(APIView):
def get(self, request, id, format=None):
data = User.objects.get(id)
serializer_class = UserDetailsSerializer
return Response(serializer_class.data)
我一直在通过外壳创建用户。像这样:user = User.objects.create_user('John', '[email protected]', 'pass')
。这确实很好,但是我不确定如何创建UserDetailsView
对象并保存它。
在您的视图中创建UserDetails
user = User.objects.get(id=id)
UserDetails.objects.create(id=user.id,user=user,extA=your_val_1,extB=your_val_2)
然后,您应该可以将其引用为user.userdetails.extA,user.userdetails.extB
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句