문제

필드가있는 모델 질문이 있습니다 userID, 질문을하기 전에 로그인해야합니다. 저장할 때 현재 로그인 한 사용자의 사용자 ID를 캡처하고 질문 모델의 userID에 할당하려고합니다.

내 양식에 userID를 표시하지 않음 IE가 다음과 같이 userID를 선언 한 질문 모델에서 다음과 같습니다.

클래스 질문 (models.model) : ... userId = models.foreignkey (user, editable = false) ...

로그인 된 사용자 ID를 질문 모델에 할당하는 방법 userID?

도움이 되었습니까?

해결책

코드는 다음과 같습니다.

from django.contrib.auth.decorators import login_required

class QuestionForm(forms.ModelForm):
    class Meta:
         model = Question

@login_required
def ask(request):
    form = QuestionForm(request.POST)

    if form.is_valid():
        question = form.save(False)
        question.userid = request.user
        question.save()

    #...

다른 팁

이 블로그 진입 (James Bennett)은 당신에게도 유용 할 수 있습니다 ... 거의 정확히 필요한 일을 할 수있는 방법을 제시합니다.

더 최근의 자료와 업데이트 될 가능성은 공식 Django 문서를 추천합니다. 이 예는 관리 문서의 ModelAdmin Methods 섹션으로 향했습니다.https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#modeladmin-methods

당신이 나와 같다면, 당신은 그 예제를 잡고 달리기를 유혹받을 것입니다. 그러나 당신은 속도를 늦추고, 몇 분 동안 읽고, 구현하는 데 도움이 될 것입니다 - 나는 확실히 ...

나는 1.6을 가리키했지만 페이지의 오른쪽 하단 모서리에는 동적 선택기가 있습니다. (이 멋진 문서는 나를 레일에서 장고로 밀어 붙이는 것입니다!)

명심해야 할 한 가지는 Django의 디자인 제약을 해킹하지 않고 모델의 요청 객체 (및 현재 사용자)에 액세스 할 수 없다는 사실입니다.

따라서 create_by 및 updated_by와 같은 자동으로 채워진 필드와 같은 깔끔한 트릭은 django에서 작동하지 않습니다. @daevaorn이 묘사 한대로 뷰에서 이러한 필드를 수동으로 설정해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top