Python Django сохранение двух моделей из html-формы
У меня есть две модели: PersonelModel и ArizaModel. Обе в одной html форме. Данные о персонах ранее были сохранены в таблице PersonelModel. При нажатии кнопки fetch data данные извлекаются путем запроса в соответствии с полем p_sicil. Они отображаются в полях p_isim и p_bilgisayar_adi. Я создал необходимые отношения между PersonelModel и ArizaModel.
Я хочу сохранить данные, которые я ввел в поле a_aciklama, в базе данных в соответствии с отношениями между PersonelModel и ArizaModel.
Как я могу это сделать?
models.py:
class PersonelModel(models.Model):
p_sicil = models.CharField(max_length=8, verbose_name='Personel Sicili')
p_isim = models.CharField(max_length=50, verbose_name='Personel Adı')
p_bilgisayar_adi = models.CharField(max_length=4, verbose_name='Bilgisayar Adı')
p_durum = models.BooleanField(default=True, verbose_name='Personel Durumu')
birim = models.ForeignKey(BirimModel, verbose_name=("BİRİM"), on_delete=models.DO_NOTHING, null=True)
grup = models.ForeignKey(GrupModel, verbose_name=("GRUP"), on_delete=models.DO_NOTHING, null=True)
unvan = models.ForeignKey(UnvanModel, verbose_name=("ÜNVAN"), on_delete=models.DO_NOTHING, null=True)
class Meta:
db_table = 'PersonelTablosu'
verbose_name = "PERSONEL"
verbose_name_plural = "PERSONELLER"
def __str__(self):
return self.p_sicil
class ArizaModel(models.Model):
a_aciklama = models.CharField(max_length=100, verbose_name='Arıza Açıklama')
a_acilma_tarihi = models.DateTimeField(auto_now_add=True, verbose_name='Açılma Tarihi')
a_durum = models.BooleanField(default=True, verbose_name='Arıza Durumu')
a_kapanma_tarihi = models.DateTimeField(auto_now_add=True, verbose_name='Kapanma Tarihi')
birim = models.ForeignKey(BirimModel, verbose_name=("BİRİM"), on_delete=models.DO_NOTHING, null=True)
teknik_personel = models.ForeignKey(TeknikPersonelModel, verbose_name=("TEKNİK PERSONEL"), on_delete=models.DO_NOTHING, null=True)
personel_ariza_acan = models.ForeignKey(PersonelModel, verbose_name=("AÇAN PERSONEL"), on_delete=models.DO_NOTHING, null=True)
class Meta:
db_table = 'ArizaTablosu'
verbose_name = "ARIZA"
verbose_name_plural = "ARIZALAR"
def __str__(self):
return self.a_aciklama
forms.py:
class PersonelBilgileriForm(forms.ModelForm):
p_sicil = forms.CharField(widget=forms.TextInput(attrs={
'class' : 'form-control',
'placeholder' : 'ab sicil',
'maxlength' : '8'
}))
p_isim = forms.CharField(widget=forms.TextInput(attrs={
'class' : 'form-control',
'placeholder' : 'Adınız Soyadınız',
'maxlength' : '50'
}))
p_bilgisayar_adi = forms.CharField(widget=forms.TextInput(attrs={
'class' : 'form-control',
'placeholder' : 'Bilgisayar adınızın son 4 hanesi',
'maxlength' : '4'
}))
class Meta:
model = PersonelModel
fields = ['p_sicil','p_isim','p_bilgisayar_adi']
class ArizaBilgileriForm(forms.ModelForm):
a_aciklama = forms.CharField(widget=forms.Textarea(attrs={
'class' : 'form-control',
'placeholder' : 'Arızayı yazınız'
}))
class Meta:
model = ArizaModel
fields = ['a_aciklama']
views.py:
def kullaniciArizaKaydetView(request):
if request.method == 'POST':
form2 = ArizaBilgileriForm(request.POST, prefix='ariza_bilgileri')
kullaniciningirdigisicil = request.POST['sicildenpersonelbulinput']
try:
personelbilgileri = PersonelModel.objects.get(p_sicil=kullaniciningirdigisicil)
icerik = {'bulunanbilgi':kullaniciningirdigisicil, 'personelbilgileri':personelbilgileri, 'ArizaBilgileriForm': form2}
return render(request, 'kullanici.html', icerik)
except:
return render(request, 'kullanici.html', {"hata":"kullanıcı tanımlı değil"})
else:
return render(request, 'kullanici.html')
kullanici.html: область формы
<form action="{% url 'kullaniciGetirURL' %}" method="POST" id="form-box" class="p-2">
{% csrf_token %}
<div class="form-group input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-user"></i></span>
</div>
<input type="search" class="form-control" value="{{personelbilgileri.p_sicil}}" name="sicildenpersonelbulinput">
<div class="input-group-append">
<button class="btn btn-outline-secondary" type="submit">Kişisel Bilgileri Getir</button>
</div>
</div>
<div class="form-group input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-user"></i></span>
</div>
<input type="text" class="form-control" placeholder="{{personelbilgileri.p_isim}}" name="" readonly>
</div>
<div class="form-group input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-desktop"></i></span>
</div>
<input type="text" class="form-control" placeholder="{{personelbilgileri.p_bilgisayar_adi}}" name="" readonly>
</div>
{% if personelbilgileri %}
<div class="form-group input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-comment-alt"></i></span>
</div>
{{ArizaBilgileriForm.a_aciklama}}
</div>
<div class="form-group">
<input type="submit" name="submit" id="submit" class="btn btn-primary btn-block" value="ARIZA BİLDİR">
</div>
{% endif %}
</form>
Как после ввода информации в форму сохранить ее в базе данных?