2

내가 서버에서 어떤 이유로이 오류를 받고 있어요로 사용되는 하위 쿼리에 의해 반환 된 하나 이상의 행 : 표현으로 사용되는 하위 쿼리에 의해 반환장고 - 표현

둘 이상의 행

이 라인에

:

asoc = Association.objects.get (코드에서 아래 아래 주석) (ID = asoc_pk)

하지만 난 잘 모르겠지만 그것을 실행할 때 calhost 그것은 잘 작동합니다.

아무런 도움없이 비슷한 해결책을 찾고있었습니다.

내가 알 수없는 다른 해결책을 볼 수 있기를 바랍니다.

아직도 새롭고 도움을 주셔서 감사합니다. 여러분!

class Administrator(AbstractUser): 
    ... 
    association= models.ForeignKey(Association) 


    class Meta: 
     db_table = 'Administrator' 



class Association(models.Model): 
    asoc_name = models.CharField(max_length=100) 
    ... 


    class Meta: 
     db_table = 'Association' 

views.py

def signup(request): 
    if request.method == 'POST': 
     form = SignUpForm(request.POST) 
     if not form.is_valid(): 
      return render(request, 'admin/signup.html', 
          {'form': form}) 

     else: 
      ... 
      asoc_pk = Association.objects.filter(asoc_name=request.user.association) 
      asoc = Association.objects.get(id=asoc_pk) **#ERROR here but why?** 
      ... 
      Administrator.objects.create_user(... 
               association=asoc,  
               ...) 
      user = authenticate(... 
           association=asoc, 
           ...) 
      return redirect('/') 

    else: 
     return render(request, 'admin/signup.html', 
         {'form': SignUpForm()}) 

답변

2
 asoc_pk = Association.objects.filter(asoc_name=request.user.association) 
     asoc = Association.objects.get(id=asoc_pk) **#ERROR here but why?** 

당신의 협회 모델이 asoc_name 재산에 고유 제한 조건을 적용하지 않기 때문에


models.py. 따라서 그럴 경우 request.user.association과 일치하는 레코드가 두 개 이상있을 수 있습니다. 해결 방법은 해당 열을 고유하게 만드는 것입니다. (중복을 제거하는 방법에 대해서는 여기에 충분한 답이 있습니다)

+0

다음과 같이'filter'를'get'으로 변경해야합니다 :' "asoc_pk = Association.objects. get (asoc_name = request.user.association) "' – danihp

+0

예. 그것도 – e4c5

+0

@ e4c5 - 고맙습니다. 이 문제로 며칠 동안 고생하고 있습니다. 배우기에는 항상 새로운 것이고 지연을 위해 유감스럽게 생각합니다. – Niknak