我一直在关注这些基础知识,但我没有把它弄好。我正在尝试使用作为外键的团队将我的视图与我的用户模型相关联。当我尝试创建一个gps时,我收到一条错误,说“团队是必填字段”,但它应该只读。 team属性应自动填充currentUser的id
模型
class User(models.Model):
first_name = models.CharField(max_length=200,blank=False)
last_name = models.CharField(max_length=200, blank=False)
class Gps(models.Model):
location = models.CharField(max_length=200,blank=False)
team= models.ForeignKey(User, on_delete=models.CASCADE)
串行
class GpsSerializer(serializers.ModelSerializer):
class Meta:
model = Gps
fields = ('id','location','team')
查看
class Gps_list(generics.ListCreateAPIView):
queryset = Gps.objects.all()
serializer_class = GpsSerializer
team = serializers.PrimaryKeyRelatedField(
read_only=True,
default=serializers.CurrentUserDefault()
)
答案 0 :(得分:0)
需要进行两项更改。首先,应将team
字段定义移动到序列化程序类而不是视图。其次,你应该使用Django的contrib.auth.User
模型而不是你的用户定义,因为serializers.CurrentUserDefault()
只会带来request.user
。因此,您应该删除用户定义并将其导入models.py
:
from django.contrib.auth.models import User
进一步的步骤是将read_only=True
替换为queryset=User.objects.all()
以允许创建。