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模型中的所有字段)
- 如何在保存到视图中之前附加用户对象
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)