【发布时间】:2013-11-15 08:25:39
【问题描述】:
我是 Django 领域的新手,但看到那里有很多“魔法”。我正在使用 Django REST Framework 并创建允许免费用户注册的应用程序。我的用户需要一些在 Django 用户中不可用的附加字段。所以我用谷歌搜索扩展用户。有一个想法是应该通过创建类似这样的东西来完成
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')
所以,问题是这个序列化器在这里做了一些“魔法”。它试图找出模型应该具有什么字段... 我想让用户在这里列出字段,这些字段在用户中,“城市”是新的自定义字段。序列化程序不知道它应该在用户模型内部查看。
我在这里缺少什么?如何告诉这个序列化程序我想要用户内部的一些字段?我也需要能够创建用户。
【问题讨论】:
-
您应该使用
OneToOneField作为您的UserModel 关系,而不是ForeignKey,因为对于每个User实例,它们只能是一个MyUser。 -
使用
OneToOneField并按照这个答案,你很高兴:link
标签: python django django-models django-rest-framework