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:それはうまくいったが、別のページで私は 'omschrijving'を使用し、関数で削除するとunicodeは他のページのomschrijvingのためにまだ動作しているので、あなたは私を説明することができます。それがどうして起こるのだろうと思っていますか? – EnzoTrompeneers
これは、システムのエンコーディングで結果を返すメソッドに過ぎず、返されるものはあなた次第です。このメソッドの変更は、機能に影響を与えるべきではありません。第二の形式はどうですか? –
質問2:klas.richting.naamをklas.richting.naamに変更しました! – EnzoTrompeneers