0

I'm a newbie in Django and I'm currently creating my records but I want a more efficient way that can reduce the time and load on the server. Please let me know the best approach to create bulk records with ForeignKeys relations.

models.py

class Task(models.Model):
    name = models.CharField(max_length=255, default='')
    description = models.CharField(max_length=255, null=True, blank=True)
    project = models.ForeignKey(Project, on_delete=models.CASCADE, null=True)
    account = models.ForeignKey(User, on_delete=models.CASCADE, null=True)

    class Meta:
        db_table = 'tasks'

views.py

@api_view(['POST'])
def create_task(request): # added request JSON below
    try:
        response = []
        for task in request.data:
            data = {}
            data['name'] = task['name']
            data['description'] = task['description']
            data['project'] = task['project_id']
            data['account'] = task['user_id']
            serializer = TaskSerializer(data=data)
            serializer.is_valid()
            serializer.save()
            response.append(serializer.data)
        return Response(response)
    except Exception as e:
        return Response(str(e))

serializers.py

class TaskSerializer(serializers.ModelSerializer):
    project = ProjectSerializer(read_only=True) # added to fetch project detail in get request
    user = UserSerializer(read_only=True) # added to fetch user detail in get request
    class Meta:
        model = Task
        fields = ['id', 'name', 'description', 'project', 'user']

request from client side

[
  {
    "name": "foo",
    "description": "lorem ipsum",
    "project_id": 1,
    "user_id": 1
  },
  {
    "name": "bar",
    "description": "lorem ipsum",
    "project_id": 1,
    "user_id": 2
  },
  {
    "name": "baz",
    "description": "lorem ipsum",
    "project_id": 1,
    "user_id": 3
  }
]
im_vutu
  • 424
  • 1
  • 9
Zain Khan
  • 1,219
  • 4
  • 20
  • 41

0 Answers0