"account"와 "myapp"의 두 가지 응용 프로그램이 있습니다. request.user와 같은 조직에 속한 교사 객체 만보기로 표시하려고합니다.Django : 모델의 'user` 필드에 액세스하는 OneToOneField 관계를 탐색합니다. - NameError
계정/models.pyfrom django.contrib.auth.models import User
class Organisation(models.Model):
name = models.CharField(max_length=100, unique=True)
is_active = models.BooleanField(default=True)
class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True)
organisation = models.ForeignKey(Organisation, editable=False)
is_organisationadmin = models.BooleanField(default=False)
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])
주 user.profile.organisation
from django.contrib.auth.models import User
class Teacher(models.Model):
user = models.OneToOneField(User, related_name='teacher')
MyApp를/전망처럼 뭔가에 의해 사용자 프로파일에게 정보에 액세스 가능
this 블로그 게시물에서 마지막 줄, .py
from myproject.account.models import Organisation, UserProfile
from myproject.myapp.models import Teacher
from django.contrib.auth.models import User
def homepage(request):
if request.user.is_authenticated():
teachers = Teacher.objects.filter(user.profile.organisation == request.user.profile.organisation, user__is_active = True)
"/ 홈페이지/NameError, 전역 이름 '사용자'가 정의되지 않았습니다."가 표시됩니다. 저는 이것이 각 Teacher 객체의 teacher.user 속성에 올바르게 액세스하지 않아서라고 생각합니다.하지만 틀릴 수 있습니다.
이user.is_active
user__is_active
user.profile.organisation
user.profile__organisation
는하지만, 위의 저를주는 많은 "홈페이지 /에서 구문 에러 것은/키워드가 표현 될 수 없다", 그래서 내 생각 :
나는 관계를 통과하는 역의 모든 종류의 조합을 시도했습니다 현재 화신은 대략 옳다.
는 이상하게도, 필터의 오른쪽은
감사합니다. 내 질문에 어딘가에 무지가 있다는 느낌이 들었다. 내가 잘못 이해 한 것은 틀린 생각으로, 관계를 뒤집으려면'child__parent__parent_field'를 사용하지만'parent.child.child_field'를 전달하십시오. 이것은 링크 된 문서의 처음 네 단락에서 밝혀졌습니다. 감사합니다. 그래도'user.profile '트릭을 사용하지 않는 것 같아서, 모든 사용자가 프로파일을 가지고 있는지 확인하고'user__userprofile'로 되돌려 놓을 것입니다. – nimasmi