2017-01-19 11 views
1

質問1: Klassenへの追加...これは動作しますが、htmlでのリッチ化とleraarは、選択できるリストですが、naamとomschrijving。私はそれがnaamを示すことだけが欲しい。 image add klasDjango CRUD外部キーを持つ更新モデル

質問2:私は編集しようとすると、それは私にklas.richting.naamの入力を提供します。しかし、私はそれを更新しようとするとエラーになります: image edit error私は何も変更しないときでさえ。

models.py

class Richtingen(models.Model): 
    naam = models.CharField(max_length=100) 
    omschrijving = models.TextField(max_length=2000) 
    def __unicode__(self): 
     return u'%s %s' % (self.naam, self.omschrijving) 
class Leraren(models.Model): 
    naam = models.CharField(max_length=100) 
    voornaam = models.CharField(max_length=100) 
    foto = models.ImageField(upload_to = 'leerkrachten', default='leerkrachten/anoniem.png') 
    email = models.EmailField() 
    def __unicode__(self): 
     return u'%s %s %s %s' % (self.naam, self.voornaam, self.foto, self.email) 

class Klassen(models.Model): 
    naam = models.CharField(max_length=100) 
    numeriekeCode = models.CharField(max_length=100) 
    richting = models.ForeignKey(Richtingen, on_delete=models.CASCADE) 
    leraar = models.ForeignKey(Leraren, on_delete=models.CASCADE) 

    def __unicode__(self): 
     return u'%s %s %s %s' % (self.naam, self.numeriekeCode, self.richting, self.leraar) 

forms.py

class RichtingForm(ModelForm): 
    class Meta: 
     model = Richtingen 
     fields = ['naam', 'omschrijving'] 

class LeraarForm(ModelForm): 
    class Meta: 
     model = Leraren 
     fields = ['naam', 'voornaam', 'foto', 'email'] 

class KlasForm(ModelForm): 
    class Meta: 
     model = Klassen 
     fields = ['naam', 'numeriekeCode', 'richting', 'leraar'] 

views.py

def edit_klassen(request, id): 
    klas = Klassen.objects.get(id=id) 
    edit = True 
    context = {"klas": klas, 
     'edit': edit} 
    return render(request, 'main_app/klassen.html', context) 

def edit_richtingen(request, id): 
    richting = Richtingen.objects.get(id=id) 
    edit = True 
    context = {"richting": richting, 
     'edit': edit} 
    return render(request, 'main_app/richtingen.html', context) 

def edit_leraren(request, id): 
    leraar = Leraren.objects.get(id=id) 
    edit = True 
    context = {"leraar": leraar, 
     'edit': edit} 
    return render(request, 'main_app/leraren.html', context) 

def create_richting(request): 
    form = RichtingForm(request.POST, request.FILES) 
    if form.is_valid(): 
     form.save(commit = True) 
    return HttpResponseRedirect('/richtingen') 

def create_leraar(request): 
    form = LeraarForm(request.POST, request.FILES) 
    edit = False 
    if form.is_valid(): 
     form.save(commit = True) 
    return HttpResponseRedirect('/leraren') 

def create_klas(request): 
    form = KlasForm(request.POST, request.FILES) 
    if form.is_valid(): 
     form.save(commit = True) 
    return HttpResponseRedirect('/klassen') 

def update_leraren(request, id): 
    Leraren.objects.get(id=id).delete() 
    form = LeraarForm(request.POST, request.FILES) 
    if form.is_valid(): 
     form.save(commit = True) 
    return HttpResponseRedirect('/leraren') 


def update_richtingen(request, id): 
    richting = Richtingen.objects.get(id=id) 
    richting.naam = request.POST['naam'] 
    richting.omschrijving = request.POST['omschrijving'] 
    richting.save() 
    edit = False 
    context = {"richting": richting, 
     'edit': edit} 
    return HttpResponseRedirect('/richtingen') 

def update_klassen(request, id): 
    klas = Klassen.objects.get(id=id) 
    klas.naam = request.POST['naam'] 
    klas.numeriekeCode = request.POST['numeriekeCode'] 
    klas.richting = request.POST['richting'] 
    klas.leraar = request.POST['leraar'] 
    klas.save() 
    edit = False 
    context = {"klas": klas, 
     'edit': edit} 
    return HttpResponseRedirect('/klassen') 

klassen.html

#edit 
form class="all_forms" action="../update/{{klas.id}}" method="POST"> 
    {% csrf_token %} 
    <label for="naam">Vak:</label> <input type="text" name="naam" id="naam" value='{{klas.naam}}' placeholder='{{klas.naam}}' /><br> 
    <label for="numeriekeCode">Klaslokaal:</label> <input type="text" name="numeriekeCode" id="numeriekeCode" value='{{klas.numeriekeCode}}' placeholder='{{klas.numeriekeCode}}' /><br> 
    <label for="richting">Richting:</label> <input type="text" name="richting" id="richting" value='{{klas.richting.naam}}' placeholder='{{klas.richting}}' /><br> 
    <label for="leraar">Leraar:</label> <input type="text" name="leraar" id="leraar" value='{{klas.leraar}}' placeholder='{{klas.leraar}}' /><br> 
    <br> 
    <div> 
     <button type="submit" name="submit">Wijzigen</button> 
    </div> 
    </form> 

# create 
<form class="all_forms" action="create_klas/" method="POST"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <div> 
     <button type="submit" name="submit">Verzenden</button> 
    </div> 
</form> 

答えて

1
class Richtingen(models.Model): 
    naam = models.CharField(max_length=100) 
    omschrijving = models.TextField(max_length=2000) 
    def __unicode__(self): 
     return u'%s %s' % (self.naam, self.omschrijving) 

class Richtingen(models.Model): 
    naam = models.CharField(max_length=100) 
    omschrijving = models.TextField(max_length=2000) 
    def __unicode__(self): 
     return u'%s' % (self.naam) 

にフォームを変更し、それがエラーで表示としてRichtingenインスタンスを提供しなければならない二つ目の場合:については

<label for="richting">Richting:</label> <input type="text" name="richting" id="richting" value='{{klas.richting}}' placeholder='{{klas.richting}}' /><br> 
+0

変更すべき最初の質問については質問1:それはうまくいったが、別のページで私は 'omschrijving'を使用し、関数で削除するとunicodeは他のページのomschrijvingのためにまだ動作しているので、あなたは私を説明することができます。それがどうして起こるのだろうと思っていますか? – EnzoTrompeneers

+0

これは、システムのエンコーディングで結果を返すメソッドに過ぎず、返されるものはあなた次第です。このメソッドの変更は、機能に影響を与えるべきではありません。第二の形式はどうですか? –

+0

質問2:klas.richting.naamをklas.richting.naamに変更しました! – EnzoTrompeneers

関連する問題