내 사용자 가입 과정에서 사용자는 먼저 계정을 만든 다음 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가 있어야하는이 필드를 자동으로 채우는 방법이 있습니까? 아니면 이것을 달성 할 다른 방법이 있습니까?
당신이하지 않는 템플릿에 템플릿에 다음
list_form = forms.ListForm(instance=list_create)
그리고 전달하여 액세스 할 수 있습니다 'list_id'가 필요합니다. 목록이 실제로 생성 될 때 올바르게 따르고 있다고 가정합니다. 모델 정의의 관련 부분을 추가 할 수 있습니까 (적어도 list_id 필드 정의와 실제로 생성 한 것, 아마도 save 메소드). –
모델 필드와 MySQL의 필드 설명에 대한 질문을 업데이트했습니다. –
'ListForm'이 해당 모델의 모델 양식이고 save 메소드로 이상한 일을하지 않은 경우 저장하면 'list_id'가보기에서 사용 가능해야합니다. 객체가 데이터베이스에 쓰여지면 자동으로 채워집니다. –