get_or_create
를 사용하려고합니다
레코드가 있는지 확인하는 방법. 레코드가 존재하면 아무 것도 만들지 마십시오.
이 모델은 기본적으로 실패한 명령에 사용됩니다
class modelStudentExamsPerformed(models.Model):
patient = models.ForeignKey(modelPatient)
student = models.ForeignKey(modelStudent,on_delete=models.CASCADE)
normalBodyPart = models.ForeignKey(modelNormalBodyPartResult,default=None,blank=True,null=True)
abnormalBodyPart = models.ForeignKey(modelAbnormalBodyPartResult,default=None,blank=True,null=True)
tool = models.CharField(max_length=128, default="")
이제 위의 모델을 사용하고 실패한 명령입니다
exams.modelStudentExamsPerformed.objects.get_or_create()(patient=patient_qset, student=stud_qset,abnormalBodyPart=qset[0],normalBodyPart=None,date=None)
위의 진술은 나에게 오류를 준다 :
get() returned more than one modelStudentExamsPerformed -- it returned 2!
이제 문제가 있습니다. 관리자를 통해 데이터베이스를 살펴보면 두 개의 개체가 있지만 두 개체 모두
normalBodyPart
와 관련된 값을 갖습니다.
그리고 그들의
abnormalBodyPart
명시 적으로 지정하고
abnormalBodyPart
에 값을 할당했기 때문에
django는 왜 두 항목이 이미 존재한다고 말합니까? 나는 이것이 의미가 있기를 바랍니다.
이 방법을 다른 방법으로 설명하고 1과 2의 두 문장이 있다고 가정하자. 명령문 1은 지정된 매개 변수를 기반으로 레코드를 가져 오거나 작성합니다. django가 이미 두 개의 레코드가 있다고 생각 하므로이 get 또는 create는 실패합니다. 그러나 명령문 2는 동일한 정확한 매개 변수를 사용하고 0 개의 레코드를 리턴합니다. 왜 그런가요? 내가 여기서 누락하고 이해하지 못하는 것은 무엇입니까?
문구 1 :
exams.modelStudentExamsPerformed.objects.get_or_create()(patient=patient_qset, student=stud_qset,abnormalBodyPart=qset[0],normalBodyPart=None,date=None)
이 테이블의 어떤 개체도
abnormalBodyPart
에 대한 값을 가지고 있지 않은 경우
. 다음을 수행하여이를 확인했습니다
문구 2 :
k = exams.modelStudentExamsPerformed.objects.filter(patient=patient_qset, student=stud_qset,abnormalBodyPart=qset[0], normalBodyPart=None,date=None)
위의 문장 2는 아무것도 반환하지 않습니다. 내 질문은 왜 진술 2가 아무것도 반환하지 않는 동안 진술 1은 이미 2 가지 항목이 있다고 주장하면서
get
가 실패한다고 불평하는 것입니다.
전화.
- 답변 # 1
관련 자료
- 파이썬에서 여러 매개 변수를 기반으로 객체 목록을 정렬하는 방법
- javascript - 여러 기준으로 객체 배열 정렬
- python - 카드의 너비와 높이 또는 색상을 사용하여 여러 개체가있는 이미지에서 카드 감지 및 자르기
- python - 클래스에 할당 할 동적 개체 이름을 만드는 방법은 무엇입니까?/Tkinter가 다른 개체 이름으로 여러 창을 만드는 방법
- Bash - 세게 때리다 - 잘못된 대체를 반환하는 문자열 대체의 기본 매개 변수
- javascript - 여러 대괄호 안에 콘텐츠를 반환하는 정규식
- javascript - 배열에있는 여러 개체의 합계 및 평균 값을 하나의 배열로 만듭니다
- javascript - 객체 배열에 여러 객체가 포함되어 있는지 확인
- salesforce - ID를 기반으로 여러 관련 개체를 탐색하고 관련 필드를 반환하려면 어떻게해야합니까?
- 다른 클래스 Java의 객체로 매개 변수를 사용하여 메서드를 호출하는 방법은 무엇입니까?
- java - 스트림에서 여러 목록을 하나의 객체 목록으로 병합 하시겠습니까?
- c# - [HttpGet]에 대한 여러 매개 변수
- PHP에서 여러 JSON 객체를 추출하고 배열하려면 어떻게해야합니까?
- flutter - dart api - 여러 쿼리 매개 변수를 보내는 방법
- javascript - 동일한 이름으로 여러 쿼리 매개 변수를 표현하면 배열이 반환되지 않습니다
- javascript - GET 요청에서 여러 파라미터를 사용하여 DynamoDB에서 데이터 가져 오기
- Python 여러 값을 다른 함수로 반환
- Python에서 여러 객체로 요청을 POST하는 방법
- javascript - for 루프에서 각주기마다 여러 개체 설정
- javascript - JSON 파일에서 여러 개체 그룹을 볼 수 있습니까?
- Django 모델 선택 textField 매핑
- sqlite 데이터베이스의 모든 데이터를 cockroachdb로 마이그레이션하는 방법(django 프로젝트의 경우)
- 다른 선택의 개수 합계 목록을 가져오는 Django 쿼리
- 페이지를 새로 고치지 않고 django에서 페이지를 업데이트하는 방법은 무엇입니까?
- django: BInaryField를 사용하여 플래그 필드 시뮬레이션
- python : django rest 프레임워크의 AbstractUser 모델에서 사용자 정의 부울 필드를 직렬화할 수 없습니다.
- python : 답변 검사기를 테스트하는 동안 TypeError
- python : TypeError: Planet()에 예기치 않은 키워드 인수 '이름'이 있습니다.
- Django HttpResponseRedirect는 템플릿에 변수를 전달하고 읽습니다.
- [Django][DRF] .filter를 사용하여 UNORDERED 쿼리 세트를 얻는 방법은 무엇입니까?
당신은
get_or_create()
를 호출 인수없이__call__()
를 호출하십시오. 결과 인스턴스의 메소드.get_or_create
안에 키워드를 넣습니다 제대로 작동하도록 또한 메소드 서명을 다시 연구하십시오.defaults
가 누락되었습니다. 논의. 이 방법은 다음과 같이 작동합니다."defaults"를 제외하고 제공된 키워드 인수를 필터링
아무것도 반환되지 않으면 해당 키워드 인수로 새 인스턴스를 만들고 "defaults"키워드 인수를 사용하십시오 (추가 필드를 채우기위한 사전이어야 함).
때로는 설명하는 것이 좋습니다 :
와 동일합니다 :