Отношения работа, пользователи в моделях один ко многим? - PullRequest
0 голосов
/ 23 января 2019

Каков лучший способ связать эти таблицы, извините, я новичок в Django и мне нужно немного помочь с этим, я получил 3 таблицы:

  1. Пользователи
  2. Jobs ---> имеет поле автора, которое является пользователем ...
  3. Прикладной

Поэтому я хочу, чтобы пользователи подали заявки на вакансии, которые они не опубликовали, и они могут подать заявку только один раз.

Итак, что я получил в данный момент, это:

class Applied(models.Model):
  user = models.ForeignKey(User, on_delete=models.CASCADE)
  job = models.ForeignKey(Job, on_delete=models.CASCADE)

  class Meta:
    unique_together = ('userenter code here', 'job',)

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

duplicate key value violates unique constraint "job_applied_user_id_job_id_c38a42a4_uniq"
DETAIL:  Key (user_id, job_id)=(1, 6) already exists.

Это моя модель:

class Job(models.Model):
  title = models.CharField(max_length=100)
  author = models.ForeignKey(User, on_delete=models.CASCADE)
  cost = models.DecimalField(max_digits=25, decimal_places=4)

Это мой взгляд:

def apply(request, id):
  print "the %s has applied " %(request.user.username)
  job = Job.objects.get(pk=id)

  if job.author == request.user:
    messages.warning(request, 'You cannot apply to jobs you have publish')
  else:
    user = User.objects.get(pk=request.user.id)
    applied = Applied(user = user, job = job)
    if applied.not_applied_before():
      applied.save()
      messages.success(request, 'applied to job success')
    else:
      messages.info(request, 'You apply to this job already')
...