繁体   English   中英

使用外键模型 django restframework 创建视图

Creating view with foreign key model django restframework

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我对 django restframework 相当陌生。

我想创建一个串行器和具有一个模型的视图foreignKey

模型.py

class Job(models.Model):
  """A Job used to create a job posting"""
  user = models.ForeignKey(
    settings.AUTH_USER_MODEL,
    on_delete=models.CASCADE,
  )
  description = models.TextField()
  job_type = models.CharField(max_length=12, choices=JOB_TYPE_CHOICES, default='Full-Time')
  city = models.CharField(max_length=255)
  state = models.CharField(max_length=255)
  created_date = models.DateField(auto_now=False, auto_now_add=True)
  salary = models.CharField(max_length=255)
  position = models.CharField(max_length=255)
  employer = models.CharField(max_length=255)
  is_active = models.BooleanField(default=True)

  def __str__(self):
    return self.description[:50]


class Applicant(models.Model):
  """A applicant that can apply to a job"""
  job = models.ForeignKey(Job, on_delete=models.CASCADE)
  first_name = models.CharField(max_length=255)
  last_name = models.CharField(max_length=255)
  email = models.EmailField(max_length=254)
  phone_number = PhoneNumberField()
  resume = models.FileField(upload_to=resume_file_path, validators=[validate_file_extension])

  def __str__(self):
    return self.first_name

这个想法是Applicant将能够申请Job

Applicant Job时,我似乎无法弄清楚如何获得Job id

序列化程序.py

class JobSerializer(serializers.ModelSerializer):
  """Serializer for tag objects"""

  class Meta:
    model = Job
    fields = ('id', 'description', 'job_type', 'city', 'state', 'salary', 'position', 'employer', 'created_date', 'is_active')
    read_only_fields = ('id',)
 

  def create(self, validated_data):
    """Create a job posting with user and return it"""
    return Job.objects.create(**validated_data)


class ApplyJobSerializer(serializers.ModelSerializer):
  """Serializer for applying to jobs"""

  class Meta:
    model = Applicant
    fields = ('id', 'first_name', 'last_name', 'email', 'phone_number', 'resume')
    read_only_fields = ('id',)

视图.py

class ApplyJobView(generics.CreateAPIView):
  """Allows applicants to apply for jobs"""
  serializer_class = serializers.ApplyJobSerializer

下面是我的http://localhost:8000/api/jobPosting/apply/ url 的图像

我不知道如何将Jobs作为选项引入我的视图,以便我可以获得 id 字段。

在此处输入图片说明

POST时出现以下错误

null value in column "job_id" violates not-null constraint

1 个回复

您没有在序列化程序字段中传递作业字段。 试试这个:

class ApplyJobSerializer(serializers.ModelSerializer):
  """Serializer for applying to jobs"""

  class Meta:
    model = Applicant
    fields = ('id', 'first_name', 'last_name', 'email', 'phone_number', 'resume', 'job')
    read_only_fields = ('id',)
1 Django使用外键创建模型

我有如下模型: 我有序列化器: 和我的看法: 我希望在创建任务时也可以在单个请求中创建“步骤”。 我从前端发送的请求JSON如下所示: 这引发了我{"steps":[{"task":["This field is required."]}]}错误。 我究竟做错 ...

2 Django 2.2 和 Rest Framework 3.11 - 使用所有者的用户名字符串而不是 pk 部分更新模型“所有者”字段(外键)

Django 2.2 和 Rest Framework 3.11 我有一个警报模型。 每个警报实例都可以选择拥有一个所有者(标准 django 用户模型)。 我希望能够通过仅使用他/她的用户名(字符串)而不是 pk 设置其所有者来部分更新(PATCH)警报。 现在,我只能通过使用他/她的 p ...

3 我应该同时使用 Django 视图和 Rest Framework,如何使用?

我将创建一个 Web 应用程序,它主要依赖于基本的 CRUD 操作,但将来可能会发生变化(例如从另一个 Web 服务获取数据)。 我还将为我的 Web 应用程序创建一个移动应用程序,以便执行相同的 CRUD 操作,并且该移动应用程序将使用我的 Web 应用程序的 REST API。 所以问题是我应 ...

5 如何在 Django 中使用外键创建新模型

这些是我的模型。 我正在尝试创建一个新的ScheduleDefinition ( Schedule已经存在并且我知道我想用于我的外键的 ID)。 我有一个我想使用的预定义计划 ID,但它不起作用.. 发布这个身体: 我得到的错误: null value in column "schedul ...

6 使用外键以Django模型形式创建对象

我正在模型表格中插入新记录,其中我的模型是包含前键的子表格。 当我提交表格时,给出错误,应该是foriegn键的实例。 这是我的模特 这是我的看法 这是我的表格 提交表单时出现错误 所以我加了线 现在我得到以下提到的错误 form = fo ...

7 Django - 使用外键对象创建模型对象

我觉得我不知道它应该如何工作...... 我有 2 个模型: 组是我想保存的自定义模型。 User 是应用程序的标准用户模型。 我现在跳过 UserManager。 简单地说,用户可以有多个组。 自定义模型的序列化程序: 以及一个带有覆盖create方法的视图集: 调用 POST ...

8 使用专用访问器为Django模型创建外键

我希望工作人员能够监督其他工作人员。 工人不需要主管。 他们无法自我监督。 (我不在乎循环) 我不确定执行此操作的最标准的django标准方法。 我可以创建一个自定义的setter函数,但是我注意到该模型仍然具有supervisor和supervisor_id ,可以直接将其写入,从而规避了我已 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM