如何在DJANGO REST中保存外键值?

时间:2019-03-25 09:34:10

标签: django-rest-framework python-3.6 django-serializer django-2.1

假设我有以下模型。

class Department(models.Model):
   name = models.CharField(max_length=255)

class Student(models.Model):
   department = models.Foreignkey(Department, on_delete=models.CASCADE)
   name = models.CharField(max_length=255)

现在,每当我创建学生Department(which is created already)时,我都需要设置Student中的instance

最佳实践

i)  Sending the department id in URI like `departments/{pk}/students`
ii) sending department id in body parameter

2 个答案:

答案 0 :(得分:1)

始终最好将敏感数据(例如id)作为Post请求发送,而不要作为URL args传递。如果您确实要在URL中传递数据,请使用slugs而不是ID。

此外,您可以使用DRF model serializer保存数据

答案 1 :(得分:1)

在这种情况下,最好在正文中发送部门ID,并使端点保持简单

{base}/api/student/

对此端点进行HTTP POST

{
    "department_id":"",
    .
    .
}

通过查看此端点,可以清楚地显示涉及student对象的操作的端点,我想说它更接近REST标准。