J'ai un formulaire dans un projet Django, et je veux que l'utilisateur entre son anniversaire afin que je puisse être sauvegardé dans la base de données et utilisé plus tard dans le projet ...Essayer de permettre à l'utilisateur de sélectionner anniversaire - django
J'ai un modèle et je veux créer un Modelform qui va demander la date et ensuite le formater et l'enregistrer dans la base de données. J'ai essayé de comprendre cela pendant 3 jours et je ne peux pas le faire fonctionner ... J'ai dû supprimer mon fichier de base de données environ 5 fois parce que cela ne fonctionnait pas et la base de données ...
Lorsque l'utilisateur soumet le formulaire, le retour est trois éléments distincts qui comprennent dob_month, dob_day, dob_year avec les informations de date correctes
Voici ce que j'ai jusqu'à présent.
fichier models.py
class Profile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE) # server
first_name = models.CharField(max_length=25, default='first')
last_name = models.CharField(max_length=25, default='last')
dob = models.DateField(auto_now_add=False, blank=True)
city = models.CharField(max_length=45) # user
state = models.CharField(max_length=25, default='state')
phone = models.BigIntegerField(default=0) # user
privacy = models.SmallIntegerField(default=1) # user
created = models.DateTimeField(auto_now_add=True) # server
Voici le fichier forms.py:
class ProfileForm(forms.ModelForm):
split_choices = (('1', 'public'),
('2', 'private'))
privacy = forms.TypedChoiceField(
choices=split_choices, widget=forms.RadioSelect, coerce=int
)
dob = forms.DateField(widget=extras.SelectDateWidget)
class Meta:
model = Profile
fields = ['first_name', 'last_name', 'dob', 'city', 'state', 'phone', 'privacy']
est ici le fichier view.py (la définition spécifique qui traite la forme ...)
def profile_setup(request):
if 'username' not in request.session:
return redirect('login')
else:
# the following is just going to grab the currently logged in user and
# save the profile information to the appropriate user
username = request.session['username']
currentUser = User.objects.get(username = username)
# the following is the provessing for the form where the user entered
# the profile informaiton
if request.method == 'POST':
form = ProfileForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
first_name = cd['first_name']
last_name = cd['last_name']
dob_month = form.cleaned_data.get("dob_month")
dob_day = form.cleaned_data.get("dob_day")
dob_year = form.cleaned_data.get("dob_year")
city = cd['city']
state = cd['state']
phone = cd['phone']
privacy = cd['privacy']
# this is the new record that is going to be created and saved
new_profile = Profile.objects.create(
user = currentUser,
first_name = first_name,
last_name = last_name,
dob_month = dob_month,
dob_day = dob_day,
dob_year = dob_year,
city = city,
state = state,
phone = phone,
privacy = privacy,
)
return redirect('home_page')
else:
# this is what is going to be saved into the html file and used to
# render the file
form = ProfileForm()
message = 'fill out form below'
parameters = {
'form':form,
'currentUser':currentUser,
'message':message,
}
return render(request, 'tabs/profile_setup.html', parameters)
** MISE À JOUR SECTION **
permet donc dire que j'avoir un modèle comme les suivants:
class Group(models.Model):
name = models.CharField(max_length = 25)
description = models.CharField(max_length = 250, null=True)
count = models.SmallIntegerField(default=1)
status = models.SmallIntegerField(choices=GROUP_STATUS_CHOICES, default=1)
reference_code = models.IntegerField(default=0)
Andi ont une forme de modèle comme ce qui suit:
class CreateGroupForm(forms.ModelForm):
class Meta:
model = Group
fields = ['name', 'count', 'description']
et l'utilisateur soumet le formulaire suivant:
name : omar jandali
count : 5
description : random group
alors je peux traiter le formulaire de la façon suivante:
form = CreateGroupForm(request.POST, instance=new_group)
new_group = Group(
name = name,
description = desciption,
count = count,
status = status,
)
ou devrais-je encore affecter les données nettoyées ....
Donc, pour n'importe quelle forme de modèle, je peux juste créer une instance de celui-ci et l'enregistrer sans avoir à le traiter comme je le fais en ce moment .... pouvez-vous regarder la section mise à jour de mon article quelque chose comme ça pour l'une de mes formes [email protected] –
Étant donné que vous utilisez un modèle avec des champs pour le nom, la description et le nombre, il n'est pas nécessaire d'ajouter le nom, la description et le nombre au nouveau groupe. Vous avez juste besoin de valeurs pour status et reference_code. Assurez-vous également que votre balise de formulaire ne vient pas après votre nouveau_group ou qu'elle ne fonctionnera pas. – jonin