사용자가 레코드를 업데이트 할 수 있어야하는 API를 만듭니다. 상태 업데이트 또는 이름 변경과 같이 대부분의 경우 하나의 필드 만 변경됩니다. 이것은 PATCH 요청에 대한 적절한 유스 케이스 시나리오로 보인다. 내가 이해하기에 이것은 '부분적인'업데이트입니다.Django REST Framework 패치가 필수 입력란에서 실패합니다.
장고의 REST 프레임 워크를 구현하여이 문제를 해결했습니다. "AccountUser"와 같은 레코드의 경우 이름 필드 만 변경하여 다음 요청을 보내려고합니다. 패치/api/users/1/HTTP/1.1 호스트 : localhost X-CSRFToken : 111122223333444455556666 콘텐츠 유형 : 응용 프로그램/JSON; 문자셋 = UTF-8 캐시 제어 : 노 캐시
{ "fullname": "John Doe" }
기록은 분명히 이러한 새로운 필요 '계정'으로 '관련'분야의 몇 가지를 포함하여 다른 특성을가 기록. 요청을 제출할 때 응답은 다음 본문의 400 오류입니다. { "account": [ "이 입력란은 필수 항목입니다."
class AccountUserSerializer(serializers.ModelSerializer):
account = serializers.PrimaryKeyRelatedField()
class Meta:
model = AccountUser
fields = ('id', 'account', 'fullname', ...)
depth = 1
을 그리고 모델은 다음과 같습니다 :]} 는 사용자의 시리얼은 다음과 같다 내가 여기서 뭔가 잘못하고 또는이다 건가요
class AccountUser(models.Model):
''' Account User'''
fullname = models.CharField(max_length=200,
null=True,blank=True)
account = models.ForeignKey(Account,
on_delete=models.PROTECT
)
objects = AccountUserManager()
def __unicode__(self):
return self.email
class Meta:
db_table = 'accounts_account_user'
잘못 업데이트 할 수 있기를 기대하는 방법 이 방법으로 레코드의 단일 필드. 감사! 이 커뮤니티는 흔들립니다!
편집 : 요청 - AccountUserManager : 관리자가 사용자를 필터링처럼
class AccountUserManager(BaseUserManager):
def create_user(self, email, account_name):
username = hash_email_into_username(email)
...
account = Account.objects.get(name=account_name)
account_user = AccountUser(email=email,user=user,account=account)
account_user.save()
return account_user
시도 ='account''을 볼 수 있습니다 ..' –
을'Account' 모델에 대한 역방향 조회 만하다고. –
이 수 당신은'AccountUserManager'를 게시하고 있습니까? 저는 매니저가'pk = 1'에서 객체를 반환하지 않아서'partial_update'를 호출하는 패치 호출이 새로운 인스턴스를 생성해야한다고 생각한다는 것을 짐작하고 있습니다. –