Как отнести дочернюю таблицу foreignkey к его родительской таблице, где parenttable вызывает экземпляр от зарегистрированного пользователя (компании) в Django - PullRequest
0 голосов
/ 21 января 2020

Создание объекта задания из класса Job (models.Model) для зарегистрированной компании работает. Когда я сохраняю форму, она передает идентификатор объекта в указанную c компанию.

Проблема в том, что создание объекта с помощью chiltable работает, но не связывает его с указанным c экземпляром компании. Как я могу отнести его к тому же экземпляру, что и класс Job?

Пожалуйста, помогите мне, ребята ..

Model.py

class Job(models.Model):
objects = CompanyProfile()
user = models.ForeignKey(CompanyProfile, on_delete=models.CASCADE)
title = models.CharField(max_length=300)
description = models.TextField()
compensation = models.IntegerField()
last_date = models.DateTimeField(null=True, blank=True)
contact_person = models.CharField(max_length=30)
contact_person_image = models.FileField(upload_to=job_contact_person_path, blank=True)
created_at = models.DateTimeField(default=timezone.now, blank=True)
is_active = models.BooleanField(default=True)
address = models.CharField(max_length=100, null=True)
zip_code = models.CharField(max_length=10, null=True)
city = models.CharField(max_length=30, null=True)
phone_number = models.CharField(max_length=30, null=True)
contact_person_email = models.EmailField(null=True)

class JobFunction(models.Model):
objects = Job()
job = models.ForeignKey(Job, on_delete=models.CASCADE, null=True, related_name='jobfunctions')
name = models.CharField(max_length=60)

class InternType(models.Model):
objects = Job()
job = models.ForeignKey(Job, on_delete=models.CASCADE, null=True, related_name='interntypes')
name = models.CharField(max_length=30)

Forms.py

class JobAddForm(forms.ModelForm):
class Meta:
    model = Job

    fields = (
              'title',
              'description',
              'compensation',
              'contact_person',
              'contact_person_image',
              'created_at',
              'is_active',
              'address',
              'zip_code',
              'phone_number',
              'city',
              'contact_person_email'
              )
    labels = {
        'description': '',
        'contact_person': 'Contactpersoon',
        'compensation': 'compensatie',
        'title': 'titel',
        'is_active': 'Vacature is actief',
        'address': 'Adres',
        'zip_code': 'Postcode',
        'phone_number': 'Telefoonnummer',
        'city': 'Stad',
        'contact_person_image': 'Foto contact persoon'

    }

class JobFunctionForm(forms.ModelForm):
class Meta:
    model = JobFunction
    fields = (
       'name',
        )

    labels = {
       'name': 'Vacature functie',

        }

class JobInternTypeForm(forms.ModelForm):
class Meta:
    model = InternType
    fields = (
       'name',
        )

    labels = {
       'name': 'Type stage',

        }

Views.py

def company_create_job(request):
user1 = User.objects.get(pk=request.user.id)
company = CompanyProfile.objects.get(user=user1)

add_job_form = JobAddForm(request.POST or None)
add_jobfunction_form = JobFunctionForm(request.POST or None)
add_jobtype_form = JobInternTypeForm(request.POST or None)

if request.method == 'POST':
    if add_job_form.is_valid() and add_jobfunction_form.is_valid() and add_jobtype_form.is_valid() :

        job = add_job_form.save(commit=False)
        job.user = company
        job.title = add_job_form.cleaned_data.get('title')
        job.description = add_job_form.cleaned_data.get('description')
        job.compensation = add_job_form.cleaned_data.get('compensation')
        job.contact_person = add_job_form.cleaned_data.get('contact_person')
        job.is_active = add_job_form.cleaned_data.get('is_active')
        job.address = add_job_form.cleaned_data.get('address')
        job.zip_code = add_job_form.cleaned_data.get('zip_code')
        job.phone_number = add_job_form.cleaned_data.get('phone_number')
        job.city = add_job_form.cleaned_data.get('city')
        job.contact_person_email = add_job_form.cleaned_data.get('contact_person_email')

        #Job function - Childtable of Job
        job.jobfunctions = job
        job.jobfunctions.name = add_jobfunction_form.cleaned_data.get('name')

        # Job type - Childtable of Job
        job.interntypes.job = job
        job.interntypes.name = add_jobtype_form.cleaned_data.get('name')

        add_jobfunction_form.save()
        add_jobtype_form.save()
        job.save()

    else:
        add_job_form = JobAddForm(prefix='UF')
        add_jobfunction_form = JobInternTypeForm(prefix='UF')
        add_jobtype_form = JobFunctionForm(prefix='UF')

context = {
    'user': user1,
    'company': company,
    'add_job_form': add_job_form,
    'add_jobfunction_form': add_jobfunction_form,
    'add_jobtype_form': add_jobtype_form,
}

return render(request, 'jobportal/company/create_job.html', context, {

})

job.interntypes.job = job ^ эта строка не сохраняет объект внешнего ключа, связанный с заданием. Имя сохраняется с полем задания, оставляя пустым там, где нет внешнего ключа для модели задания. Как установить модель Job в качестве внешнего ключа этой модели JobFunction.

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