Django REST-使用PrimaryKey创建对象

Django REST-使用PrimaryKey创建对象,django,django-rest-framework,Django,Django Rest Framework,型号: class Company(models.Model): name = models.CharField(max_length=200, blank=True, default='') created = models.DateTimeField(auto_now_add=True) user = models.ForeignKey(User, related_name='companies') class Meta: ordering

型号:

class Company(models.Model):
    name = models.CharField(max_length=200, blank=True, default='')
    created = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, related_name='companies')

    class Meta:
        ordering = ('-created',)
@csrf_exempt
def companies_create(request):
    if request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = CompanySerializer(data=data)
        print(serializer)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)
我使用内置的用户模型

序列化程序

class CompanySerializer(serializers.ModelSerializer):

    class Meta:
        model = Company
        fields = ('name', 'created')


class UserSerializer(serializers.ModelSerializer):
    companies = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = User
        fields = ('id', 'username', 'email', 'first_name', 'last_name', 'date_joined', 'is_staff', 'is_active',
                  'is_superuser', 'last_login', 'companies')
查看:

class Company(models.Model):
    name = models.CharField(max_length=200, blank=True, default='')
    created = models.DateTimeField(auto_now_add=True)
    user = models.ForeignKey(User, related_name='companies')

    class Meta:
        ordering = ('-created',)
@csrf_exempt
def companies_create(request):
    if request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = CompanySerializer(data=data)
        print(serializer)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)
  • JSON文件应该如何发送到服务器(它是否包括Company+user\u id模型中的所有字段)
  • 如何在保存到视图中之前附加用户对象

使用django获取用户模型

from django.contrib.auth import get_user_model

user_model = get_user_model()

@csrf_exempt
def companies_create(request):

    user = get_user_from_somewhere()

    if request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = CompanySerializer(data=data)
        print(serializer)
        if serializer.is_valid():

            serializer.save(user=user_model)

            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)