Python django rest框架嵌套关系-

Python django rest框架嵌套关系-,python,django,django-rest-framework,Python,Django,Django Rest Framework,我在理解Django Rest框架时遇到一些困难。我正在构建一个应用程序,非常简单。由于某种原因,我不明白我不能使它正常工作 我正在使用: python:3.4.0 Django:1.7.4 Django Rest框架:3.0.5 事情是这样的: #models.py class Country(StandardMetadata, GeoBase): CONTINENT_CHOICES = ( ('OC', 'Oceania'), ('EU', 'Euro

我在理解Django Rest框架时遇到一些困难。我正在构建一个应用程序,非常简单。由于某种原因,我不明白我不能使它正常工作

我正在使用:

python:3.4.0 Django:1.7.4 Django Rest框架:3.0.5 事情是这样的:

#models.py
class Country(StandardMetadata, GeoBase):
    CONTINENT_CHOICES = (
        ('OC', 'Oceania'),
        ('EU', 'Europe'),
        ('AF', 'Africa'),
        ('NA', 'North America'),
        ('AN', 'Antarctica'),
        ('SA', 'South America'),
        ('AS', 'Asia'),
    )

    name = models.CharField(max_length=200, db_index=True)
    slug = AutoSlugField(populate_from='name')
    continent = models.CharField(max_length=2, choices=CONTINENT_CHOICES, default='NA')
    iso2 = models.CharField(max_length=2)
    iso3 = models.CharField(max_length=3)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = 'Countries'


class Region(StandardMetadata, GeoBase):
    name = models.CharField(max_length=200, db_index=True)
    slug = AutoSlugField(populate_from='name')
    iso2 = models.CharField(max_length=2)

    country = models.ForeignKey(Country)

    def __str__(self):
        return self.get_full_name()

    def get_full_name(self):
        return ', '.join([self.name, self.country.name])

    class Meta:
        unique_together = ('slug', 'country')
        verbose_name = 'Region/State/Province'
        verbose_name_plural = 'Regions/States/Provinces'


#serializers.py
class CountrySerializer(serializers.ModelSerializer):
    class Meta:
        model = Country
        fields = ('id', 'name', 'slug', 'iso2', 'iso3', 'continent', 'lng', 'lat')


class RegionSerializer(serializers.ModelSerializer):
    country = CountrySerializer(read_only=True, required=True, many=False)

    class Meta:
        model = Region
        fields = ('id', 'name', 'slug', 'iso2', 'lng', 'lat', 'country',)

#views.py
class CountryViewSet(viewsets.ModelViewSet):
    queryset = Country.objects.all()
    serializer_class = CountrySerializer


class RegionViewSet(viewsets.ModelViewSet):
    queryset = Region.objects.all()
    serializer_class = RegionSerializer

#urls.py
router = routers.DefaultRouter()
router.register(r'countries', CountryViewSet)
router.register(r'regions', RegionViewSet)
因此,出于某种原因,我在尝试访问此url时遇到了此错误:可能无法同时设置只读和必需

我错过了什么

非常感谢你的帮助

编辑


我发现了我的一个问题。我删除了我的区域模型中的行unique_-together='slug','country'。我将slug字段设置为唯一。第二个问题是,我必须破坏模型才能使其工作。

与其在序列化程序中指定只读,不如执行以下操作:

class RegionSerializer(serializers.ModelSerializer):
    country = CountrySerializer(required=True, many=False)

    class Meta:
        model = Region
        fields = ('id', 'name', 'slug', 'iso2', 'lng', 'lat', 'country',)
        read_only_fields = ('country', )

我遵循了您的建议,但问题仍然存在。错误消息中是否已经描述了解决方案?