2017-07-26 11 views
2

モデルでオブジェクトを作成します。ジャンゴRESTは、主キー

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',) 

そして私は使用組み込みのUserモデル

シリアライザ

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') 

ビュー:

JSONファイルをサーバーに送信する必要がありますどのように
@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) 
  • が(それは会社+ user_idのモデルのすべてのフィールドが含まれませんか)?
  • ビューに保存する前にUserオブジェクトをアタッチするにはどうすればよいですか?

答えて

1
@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) 

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

使用ジャンゴget_user_model

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)