繁体   English   中英

使用外键创建视图 model django restframework

Creating view with foreign key model django restframework

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

我对 django 休息框架相当陌生。

我正在尝试为具有 foreignKey 的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 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 model 表单中创建 object

我在我的 model 表单中插入一条新记录,其中我的 model 是包含外键的子表单。 当我提交表单时,它会出错,它应该是外键的实例。 这是我的 model 这是我的看法 这是我的表格 当我提交表单时,我收到了错误 所以我添加了行 现在我收到下面提到的错误 在form = forms.MMEdit ...

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

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

8 使用专用访问器为 django model 创建外键

我希望工人能够监督其他工人。 工人不需要主管。 他们无法监督自己。 (我不关心循环) 我不确定 django 到 go 的最标准方式。 我可以创建一个自定义设置器 function,但我注意到 model 仍然有supervisor和supervisor_id ,可以直接写入,绕过我的要求。 这是 ...

暂无
暂无

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

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