Dans mon processus d'inscription d'utilisateur, l'utilisateur crée d'abord son compte, crée ensuite un objet LIST, puis est dirigé vers le tableau de bord de l'objet LIST qu'il vient de créer. Pour y parvenir, j'ai besoin de pouvoir accéder à l' list_id de l'objet LIST récemment créé afin de le transmettre à la vue/template suivante. list_id est la clé primaire de la table/classe LIST et en tant que tel, je ne veux pas qu'un utilisateur crée une valeur pour cela - elle s'incrémente automatiquement. Voici le champ du modèle:
class List(models.Model):
list_id = models.IntegerField(primary_key=True)
Description de list_id depuis MySQL:
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| list_id | int(11) | NO | PRI | NULL | auto_increment |
Voici la vue:
@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, 'Liste {0} créée'.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 est juste un exemple
else:
list_form = forms.ListForm()
return TemplateResponse(request, 'dashboard/create.html', {'list_form': list_form, })
Cependant, j'ai constaté que lorsque je n'inclus pas list_id comme partie du formulaire, je ne peux pas accéder à cet attribut (faire list_create.list_id renvoie None
lorsque list_id n'est pas un champ). Dans mon modèle, j'ai le champ list_id caché de cette manière:
{{ list_form.list_id.as_hidden }}
Comme list_id est requis et caché, le formulaire ne sera pas validé car list_id n'a pas de valeur. Cependant, si je supprime list_id en tant que champ, il semble que je ne puisse pas accéder à l'attribut list_id dans ma vue. Y a-t-il un moyen de pré-remplir ce champ avec la prochaine valeur list_id afin que je puisse récupérer la valeur avec list_create.list_id, tout en gardant le champ caché? Ou existe-t-il un autre moyen d'atteindre cela?