2017-10-17 12 views
0

J'étudie django et essaye de faire un simple CRUD, suivant le tutoriel djangoGirls. Mais malheureusement, ils ne montrent pas comment mettre à jour les données.Comment amener les données de la DB d'un utilisateur dans le formulaire pour le mettre à jour

Je suis déjà Inserting, Reading/listing comment puis-je Delete et Update?

J'énuméré les utilisateurs avec un lien pour le modifier:

{% extends 'bloodDonation/master.html' %} 

{% block content %} 
     <h1 class="center">LIST DONATORS<h1> 
     <ul> 
     {% for donator in donators %} 
      <div class="row"> 
        <div class="container"> 
         <div class="col s12 blue-grey lighten-5 border_lighten"> 
          <div class="col s12 m12 padding_normal"> 
            {{ donator.name }} 
            <div id="icon" class="right"> 
              <a href="{% url 'edit_donator' %}" class="tooltipped" data-position="right" data-delay="50" data-tooltip="Editar Dados""> <i class="material-icons">edit</i></a> 
            </div> 
          </div> 
         </div> 
        </div> 
      </div> 
     {% endfor %} 
     </ul> 

{% endblock %} 

Comme vous pouvez le voir, j'ai un pointage tag a-edit_donator url.
Comment puis-je transmettre l'ID/données de l'utilisateur sélectionné/cliqué afin que je puisse récupérer ses données et les envoyer dans le formulaire?

création de formulaire:

class EditDonatorForm(forms.ModelForm): 
     class Meta: 
      model = Donator 
      fields = [ 'name', 'age', 'email', 'phone', 'bloodType', 'observation' ] 

Essayer de passer l'ID:

url(r'^donator/(?P<pk>\d+)/update/$', views.edit_donator, name='edit_donator'), 

Comment puis-je obtenir des données de base de données et placez déjà à l'intérieur de la forme que je puisse effectuer une Update?

Répondre

1

Vous n'avez pas besoin d'envoyer les données à un autre lien. Vous pouvez mettre à jour les détails sur la même URL.

Changer votre code HTML à ceci:

{% extends 'bloodDonation/master.html' %} 

{% block content %} 
    <h1 class="center">LIST DONATORS<h1> 
    <ul> 
    {% for donator in donators %} 
     <div class="row"> 
       <div class="container"> 
        <div class="col s12 blue-grey lighten-5 border_lighten"> 
         <div class="col s12 m12 padding_normal"> 
           {{ donator.name }} 
           <div id="icon" class="right"> 
             <a href="yoururl/?edit-donator={{ donator.id }}" class="tooltipped" data-position="right" data-delay="50" data-tooltip="Editar Dados""> <i class="material-icons">edit</i></a> 
           </div> 
         </div> 
        </div> 
       </div> 
     </div> 
    {% endfor %} 
    </ul> 

{% endblock %} 

Dans votre écriture de vue,

if 'edit-donator' in request.GET: 
    edit_data = YourModel.objects.get(id=request.GET['edit-donator']) 
    form = EditDonatorForm(instance=edit_data) 

Cela obtenir les données du modèle et de le transmettre au modèle. Vous pouvez maintenant effectuer la mise à jour. Espérons que cela aide :)