2017-10-17 3 views
0

Ich studiere django und versuche, eine einfache CRUD zu bilden, dem djangoGirls Tutorial folgend. Aber leider zeigen sie nicht, wie man Daten aktualisiert.Wie man Daten von DB eines Benutzers in Form bringt, um es zu aktualisieren

Ich bin schon Inserting, Reading/listing wie kann ich Delete und Update?

aufgelistet ich die Nutzer mit einem Link zu bearbeiten:

{% 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 %} 

Wie Sie sehen können, habe ich eine a Tag zeigt auf edit_donator url.
Wie kann ich die ID/Daten des ausgewählten/angeklickten Benutzers weitergeben, damit ich seine Daten abrufen und in das Formular werfen kann?

Formularerstellung:

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

Der Versuch, die ID zu übergeben:

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

Wie kann ich Daten aus der Datenbank erhalten und bereits es in Form legen, damit ich eine Update ausführen kann?

Antwort

1

Sie müssen die Daten nicht an einen anderen Link senden. Sie können die Details für dieselbe URL aktualisieren.

Um dies ändern Ihre HTML:

{% 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 %} 

Ihrer Meinung schreiben,

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

Dadurch werden die Daten aus dem Modell erhalten und es auf die Vorlage übergeben. Jetzt können Sie das Update durchführen. Hoffe, das hilft :)

Verwandte Themen