Сначала я прочитал и попробовал все возможные решения на этом сайте и до тех пор, пока не забыл свой первый код (2 дня)
Я хочу сохранить свои данные, используя форму, используя мою страницу У меня есть 2 таблицы, их models.py похожи на:
class Wellinfo(models.Model):
WellID = models.CharField(max_length=15,unique=True)
WelX = models.CharField(max_length=15)
WelY = models.CharField(max_length=15)
post_date = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User,on_delete=models.CASCADE)
def __str__(self):
return self.WellID
def get_absolute_url(self):
return reverse('WellDt', args=[self.pk])
class Meta:
ordering = ('-post_date',)
class WellSheets(models.Model):
WellID = models.ForeignKey(Wellinfo, on_delete=models.CASCADE)
FileNm = models.CharField(max_length=15)
Folio = models.PositiveIntegerField(blank=True, null=True)
SHRPath = models.FileField(upload_to='Well_sheets')
post_date = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User,on_delete=models.CASCADE)
def __str__(self):
return self.WellID.WellID
def get_absolute_url(self):
return reverse('WellSheetg', args=[self.WellID.WellID])
class Meta:
ordering = ('-post_date',)
И forms.py:
class UploadWSF2(forms.ModelForm):
WellID = forms.ModelChoiceField(queryset=Wellinfo.objects.all())
FileNm = forms.CharField(label='File Name',max_length=15)
Folio = forms.IntegerField(label='Folio N°')
SHRPath = forms.FileField()
class Meta:
model= WellSheets
fields=['WellID','FileNm','Folio','SHRPath']
urls.py:
path('wellsheet/<slug:WIDSHT>/', views.wellsets, name='WellSheetg'),
views.py это:
def wellsets(request, WIDSHT):
serchedWl = WellSheets.objects.filter(WellID__WellID__exact=WIDSHT)
form= UploadWSF2()
context ={
'title': 'Wellssht',
'Wellslist':serchedWl,
'WIDSHT':WIDSHT,
'form':form,
}
template_name = 'Home/WELLINFO/W_TchD/wellshts.html'
if request.method == 'POST':
form = UploadWSF2(request.POST)
if form.is_valid():
print('IS valide')
obj = WellSheets()
obj.WellID = Wellinfo.objects.get(name=form.cleaned_data['WellID'])
obj.FileNm = form.cleaned_data['FileNm']
obj.Folio = form.cleaned_data['Folio']
obj.SHRPath = form.cleaned_data['SHRPath']
obj.save()
return HttpResponseRedirect('/')
else:
form = UploadWSF2(request.POST)
return render(request, template_name, context)
, а моя страница html -
<div class="border p-3 mb-3 mt-3 w3-round-large w3-light-grey border-dark">
<form method="POST" action="{% url 'WellSheetg' WIDSHT %}">
{% csrf_token %}
<div class="border p-2 mb-3 mt-3 border-secondary">
<div class="form-row">
<div class="form-group col-md-4 mb-0">
{{ form.WellID|as_crispy_field }} </div></div>
<div class="form-row">
<div class="form-group col-md-4 mb-0">
{{ form.FileNm|as_crispy_field }}</div></div>
<div class="form-row">
<div class="form-group col-md-4 mb-0">
{{ form.Folio|as_crispy_field }}</div></div>
<div class="form-row">
<div class="form-group col-md-4 mb-0">
{{ form.SHRPath }}</div></div>
</div>
<input class="btn btn-success mb-4" type="submit" value="ADD Sheet">
</form>
</div>
иногда моя форма вообще недействительна, теперь я не знаю, почему? не могли бы вы решить это или другое решение?