пустое значение в столбце "job_id" нарушает ограничение not-null - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь загрузить PDF-файл, но у меня все еще возникает ошибка целостности, когда я пытаюсь отправить PDF-файл, похоже, у меня есть некоторое свободное место в БД, которое я не знаю, может кто-нибудь, пожалуйстаПомоги мне!Ошибка:

IntegrityError at /posts/resume/
null value in column "job_id" violates not-null constraint

models.py

class Jobs(models.Model):
    title = models.CharField(max_length=80)
    jobs_type = models.CharField(max_length=80, choices=JOB_CHOICES)
    description = models.TextField()
    requirements = models.TextField()
    posted_date = models.DateTimeField(auto_now_add=True)
    start_date = models.DateField()
    deadline = models.DateField()
    link = models.URLField()
    slug = models.SlugField(max_length=150)
    contacts = models.CharField(max_length=80)
    tags = TaggableManager()

    class Meta:
        ordering = ('-posted_date',)



class Application(models.Model):
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL, related_name="application",
        on_delete=models.CASCADE)

    job = models.ForeignKey(Jobs, on_delete=models.CASCADE)
    professional_summary = models.TextField()
    resume = models.CharField(max_length=150)
    uploaded_at = models.DateTimeField(auto_now_add=True)

form.py

 class ApplicationForm(forms.ModelForm):
        resume = forms.FileField(widget=forms.FileInput(attrs={'onchange': 'uploadPreview(this)'}))
        oss_resume = forms.CharField (widget=forms.HiddenInput(), required=False)

    class Meta:
        model = Application
        fields = ('professional_summary', 'resume', )

views.py

class CreateApplicationView(LoginRequiredMixin, CreateView):
    form_class = ApplicationForm
    model = Application
    message = _("Your Event has been created.")
    success_url = reverse_lazy('posts:list_jobs')
    def __init__(self, **kwargs):
        self.object=None
        super().__init__(**kwargs)

        def form_valid(self, form):
            resume = form.cleaned_data['oss_resume']

            form.instance.user = self.request.user
            submit = form.save()
            submit.user= self.request.user

            if not resume:
                return ('posts/no_resume.html')

            else:
                submit.save()
        def get_success_url(self):
            messages.success(self.request, self.message)
            return reverse('posts:list_events')

        def get_object(self):
            resume = kwargs.get('resume')
            return Application.objects.get(resume=resume)

urls.py

url(r'^list-jobs/$', JobsListView.as_view(), name='list_jobs'),





url(r'^resume/$', CreateApplicationView.as_view(), name='resume'),

результаты:

IntegrityError at /posts/resume/
null value in column "job_id" violates not-null constraint
DETAIL:  Failing row contains (7, first job , processing.pdf, 2019-07-10 11:40:06.873356+00, null, null).

1 Ответ

0 голосов
/ 10 июля 2019

Ваша модель Application имеет модель от ForeignKey до Jobs (которая, я думаю, должна быть просто Job, но это другое дело), ​​но она не может быть пустым / пустым.Мне кажется, что ваше представление не предоставляет экземпляр Jobs для экземпляра Application, который создается при загрузке PDF, следовательно, ошибка.

Обновление:

Один из способов сделать это - добавить null=True, blank=True к объявлению поля job для модели Application.Однако это не похоже на хорошее решение, так как приложение должно быть связано с работой.Поэтому вам нужно разрешить пользователю выбирать задание, к которому он обращается, в форме Application или автоматически назначать это задание приложению при обработке отправки формы в CreateApplicationView.

.Обновление 2:

В вашем ApplicationForm попробуйте сделать следующее:

 class ApplicationForm(forms.ModelForm):
        resume = forms.FileField(widget=forms.FileInput(attrs={'onchange': 'uploadPreview(this)'}))
        oss_resume = forms.CharField(widget=forms.HiddenInput(), required=False)
        job = forms.ModelChoiceField(queryset=Jobs.objects.all())


    class Meta:
        model = Application
        fields = ('professional_summary', 'resume', 'job')

Я добавил поле в форму, чтобы человек мог выбрать работу, которую он /она подает заявку на.Это должно исправить ошибку или подтолкнуть вас в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...