2013-06-04 2 views
2

내 사용자 가입 과정에서 사용자는 먼저 계정을 만든 다음 LIST 개체를 만들고 방금 만든 LIST 개체의 대시 보드로 이동합니다. 이를 달성하기 위해서는 최근에 생성 된 LIST 객체의 list_id에 액세스 할 수 있어야 다음 뷰/템플릿으로 전달할 수 있습니다. list_id는 LIST 테이블/클래스의 기본 키이므로 사용자가이 값을 자동 생성하지 못하게합니다. MySQL의에서 list_id로의Django - 미리 채워진 숨겨진 필드

class List(models.Model): 
    list_id = models.IntegerField(primary_key=True) 

설명 : 여기에

+---------------+--------------+------+-----+---------+----------------+ 
| Field   | Type   | Null | Key | Default | Extra   | 
+---------------+--------------+------+-----+---------+----------------+ 
| list_id  | int(11)  | NO | PRI | NULL | auto_increment | 

뷰입니다 : 여기에 모델의 필드는 그러나

@login_required 
@permission_required('social_followup.add_list') 
def user_create(request): 
    if request.method == 'POST': 
     list_form = forms.ListForm(request.POST) 
     if list_form.is_valid(): 
      list_create = list_form.save() 
      messages.success(request, 'List {0} created'.format(list_create.list_id)) 
      up, _ = UserProfile.objects.get_or_create(user=request.user, list_id=list_create) 
      return redirect(reverse('user_dashboard', args=(2,))) # 2 is just an example 
    else: 
     list_form = forms.ListForm() 

    return TemplateResponse(request, 'dashboard/create.html', {'list_form': list_form, }) 

, 내가 발견 한 그 때 돈 list_id를 양식의 일부로 포함시키지 않으면 해당 속성에 액세스 할 수 없습니다 (list_id가 필드가 아닌 경우 list_create.list_id가 None을 반환 함). list_id로이 필요하고 숨겨져 있기 때문에 list_id로이 값이 없기 때문에

<div class="control-group {% if list_form.list_id.errors %}error{% endif %}"> 
    <div class="controls"> 
     {{ list_form.list_id.as_hidden }} 
    </div> 
</div> 

이 양식 유효성을 검사하지 않습니다 내 템플릿에서 나는 다음과 같은 숨겨진 list_id로 필드가 있습니다. 그러나 list_id를 필드로 제거하면 내보기에서 list_id 특성에 액세스 할 수 없습니다. list_create.list_id를 사용하여 값을 가져올 수 있도록 다음 list_id가 있어야하는이 필드를 자동으로 채우는 방법이 있습니까? 아니면 이것을 달성 할 다른 방법이 있습니까?

+0

당신이하지 않는 템플릿에 템플릿에 다음

list_form = forms.ListForm(instance=list_create)

그리고 전달하여 액세스 할 수 있습니다 'list_id'가 필요합니다. 목록이 실제로 생성 될 때 올바르게 따르고 있다고 가정합니다. 모델 정의의 관련 부분을 추가 할 수 있습니까 (적어도 list_id 필드 정의와 실제로 생성 한 것, 아마도 save 메소드). –

+1

모델 필드와 MySQL의 필드 설명에 대한 질문을 업데이트했습니다. –

+0

'ListForm'이 해당 모델의 모델 양식이고 save 메소드로 이상한 일을하지 않은 경우 저장하면 'list_id'가보기에서 사용 가능해야합니다. 객체가 데이터베이스에 쓰여지면 자동으로 채워집니다. –

답변

1

.save()이 호출되기 전에 기본 키가 존재하지 않습니다. 양식을 저장 한 후 후 PK에 액세스하려면, 당신은

{{list_form.instance.id}}

관련 문제