在Django restframework中,外键值没有进入HyperlinkedModelserializer

时间:2018-04-12 07:01:39

标签: python django angular angular2-forms

Models.py

from django.db import models


class BusinessType(models.Model):
    method = models.CharField(max_length=25)

class Vendor(models.Model):
    first_name = models.CharField(max_length=25)
    middle_name = models.CharField(max_length=25)
    last_name = models.CharField(max_length=25)
    nick_name = models.CharField(max_length=10)
    email = models.CharField(max_length=30)
    company = models.CharField(max_length=25)
    phone = models.CharField(max_length=15)
    mobile = models.CharField(max_length=10)
    fax = models.CharField(max_length=10)
    billing_address_street = models.CharField(max_length=120)
    billing_address_city = models.CharField(max_length=20)
    billing_address_state = models.CharField(max_length=20)
    billing_address_zip = models.CharField(max_length=6)
    billing_address_country = models.CharField(max_length=20)
    shipping_address_street = models.CharField(max_length=120)
    shipping_address_city = models.CharField(max_length=20)
    shipping_address_state = models.CharField(max_length=20)
    shipping_address_zip = models.CharField(max_length=6)
    shipping_address_country = models.CharField(max_length=20)
    notes = models.CharField(max_length=120)
    gstin = models.CharField(max_length=25, null=True)
    tin = models.CharField(max_length=25, null=True)
    business_type = models.ForeignKey(BusinessType, on_delete=models.CASCADE)

Serializers.py

from rest_framework import serializers
from .models import Vendor,BusinessType


class BusinessTypeSerializer(serializers.HyperlinkedModelSerializer):
    [enter image description here][1]
    class Meta:
        model = BusinessType
        fields = ('id','method')

class VendorSerializer(serializers.HyperlinkedModelSerializer):
    business_type = serializers.CharField(source='business_type.method')
    class Meta:
        model = Vendor
        fields = ('id','first_name','middle_name','last_name','nick_name','email','company','phone','mobile','fax','billing_address_street','billing_address_city','billing_address_state','billing_address_zip','billing_address_country','shipping_address_street','shipping_address_city','shipping_address_state','shipping_address_zip','shipping_address_country','notes','gstin','tin','business_type')

form

form with text

在Django restframework中,外键值未进入HyperlinkedModelserializer' business_type'领域。当我在声明外键字段后尝试发布方法时,它说:

  

" AssertionError:.create()方法不支持嵌套   默认情况下可写字段。为...写一个明确的.create()方法   序列化程序UserSerializer,或设置read_only=True"

0 个答案:

没有答案