2017-12-08 2 views
0

출생 기록 테이블의 사용자 모델에 일대일 필드가 있습니다. API를 완료하면 내 Window 8.1 노트북에서 완벽하게 작동합니다. 그래서 맥 책 인 내 친구의 노트북으로 보내면, 마이 그 레이션이 세부 정보를 입력하게되지만 대신이 오류가 발생합니다.Django rest framework 할당 할 수 없습니다. Mac의 인스턴스 오류 여야합니다

1 : ValueError : "1"을 할당 할 수 없습니다. "BirthRecord2.userId"는 "MyUser"인스턴스 여야합니다.

2 : "1"을 할당 할 수 없습니다. "BirthRecord2.userId"는 "MyUser"인스턴스 여야합니다.

내 랩톱에서 BirthRecord의 userId 필드는 사용자 목록을 표시하는 드롭 다운 목록이 있습니다. 그러나 내 친구의 맥북에서는 기존 사용자의 드롭 다운이 없으며 옆에 드롭 다운의 화살표가 있습니다.

https://imgur.com/a/n22DW 지금 내가조차 삭제하고 테이블을 다시 후 내 컴퓨터에서 잘 작동으로 문제가 무엇인지 확실하지 오전 : 내 노트북에하는 방법을 보여줍니다

이다. 아니면 그냥 맥북 문제입니까?

models.py

class MyUser(AbstractUser): 
    userId = models.AutoField(primary_key=True) 
    gender = models.CharField(max_length=6, blank=True, null=True) 
    nric = models.CharField(max_length=9, blank=True, null=True) 

    def __str__(self): 
     return self.username 


class BirthRecord(models.Model): 
    userId = models.OneToOneField(MyUser, to_field='userId', on_delete=models.CASCADE, primary_key=True) 
    durOfGes = models.CharField(max_length=100,blank=True,null=True) 
    modeOfDelivery = models.CharField(max_length = 100, blank = True, null= True) 
    weightAtBirth = models.FloatField(blank = True, null= True) 
    heightAtBirth = models.FloatField(blank = True, null= True) 
    headCirAtBirth = models.FloatField(blank = True, null= True) 

serializer.py

class MyUserSerializer(serializers.ModelSerializer): 
    valid_time_formats = ['%H:%M', '%I:%M%p', '%I:%M %p'] 
    birthTime = serializers.TimeField(format='%I:%M %p', input_formats=valid_time_formats, allow_null=True, required=False) 

    class Meta: 
     model = MyUser 
     fields = ('userId', 'username', 'email', 'first_name', 'last_name', 'gender', 'nric',) 
     read_only_fields = ('userId',) 
     # extra_kwargs = {"password": {"write_only": True}} 

    def update(self, instance, validated_data): 
     for attr, value in validated_data.items(): 
      if attr == 'password': 
       instance.set_password(value) 
      else: 
       setattr(instance, attr, value) 
     instance.save() 
     return instance 

class BirthRecordSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = BirthRecord 
     fields = ('userId', 'durOfGes', 'modeOfDelivery', 'weightAtBirth', 'heightAtBirth', 'headCirAtBirth') 

views.py

: 나에게

도와주세요 여기 내 코드입니다

class MyUserViewSet(viewsets.ModelViewSet): 
    permission_classes = [AllowAny] 
    queryset = MyUser.objects.all() 
    serializer_class = MyUserSerializer 
    filter_backends = (filters.SearchFilter,) 
    search_fields = ('=userId', 'username', 'email', 'first_name', 'last_name') 

class BirthRecordViewSet(viewsets.ModelViewSet): 
    permission_classes = [AllowAny] 
    queryset = BirthRecord.objects.all() 
    serializer_class = BirthRecordSerializer 

답변

0

나 더 읽을 수에 대한 :

def update(self, instance, validated_data): 
    password = validated_data.pop('password', None) 
    if password: 
     instance.set_password(password) 
    return super(MyUserSerializer, self).update(instance, validated_data) 
관련 문제