J'ai créé un projet avec Django et j'essaie d'écrire des formulaires à db. La classe modèle a deux classes:Django Forms Integrity Error
class Contact(models.Model):
name = models.CharField(max_length=200)
birth_day = models.DateTimeField()
address = models.CharField(max_length=200)
class PhoneNumber(models.Model):
PHONETYPE_CHOICES = (
(0, 'Home'),
(1, 'Work'),
(2, 'Fax'),
(3, 'Mobile'),
(4, 'Other'),
)
contact = models.ForeignKey(Contact)
phone_type = models.CharField(max_length=255, choices=PHONETYPE_CHOICES)
phonenumber = models.CharField(max_length=30)
Maintenant, si je veux écrire cela avec des formes et je l'utilise seulement:
Nom
Anniversaire
Adresse
Nombre tapez
Numéro de téléphone
comme champs de formulaire.
je reçois:
IntegrityError x_phonenumber.contact_id ne peut pas être NULL
Cela fait partie de la vue:
def main(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name'],
birth_day = form.cleaned_data['birth_day'],
address = form.cleaned_data['address'],
# contact1= form.cleaned_data['id']
phone_type = form.cleaned_data['phone_type']
phonenumber = form.cleaned_data['phonenumber']
contact = Contact(
name = form.cleaned_data['name'],
birth_day = form.cleaned_data['birth_day'],
address = form.cleaned_data['address'],
)
contact.save()
number = PhoneNumber(
# contact1 = form.cleaned_data ['id']
phone_type = form.cleaned_data['phone_type'],
phonenumber = form.cleaned_data['phonenumber'],
)
number.save()
Je sais que je dois remplir l'ID de la personne ce ForeignKey, mais je pensais que c'est ce que le ForeignKey fera pour moi.
L'objet "contact1" à deux commentaires n'a pas fonctionné. Mais c'est essentiellement ce que je veux, ajouter l'id à cela. De plus, Django ajoute toujours une clé primaire _id à chaque table (contact et Phonenumber).
Donc, je n'ai pas compris pourquoi, Django n'a pas ajouté à cela.
Comment puis-je enregistrer ce db avec le code correct, clé primaire, etc ..
Merci