Django данные сохранения должны быть ошибкой экземпляра, а форма недействительна - PullRequest
0 голосов
/ 17 июня 2020

Сначала я прочитал и попробовал все возможные решения на этом сайте и до тех пор, пока не забыл свой первый код  (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>

иногда моя форма вообще недействительна, теперь я не знаю, почему? не могли бы вы решить это или другое решение?

...