Django Rest Serializer:反向关系

Akaphenom

免责声明:我正在学习Django,因为我将其应用于继承的数据库/ PHP应用程序。数据库有点混乱,没有外键约束,并且命名不一致。我不想触摸或重做数据库上的任何内容,因为我根本不想与旧版应用程序打交道。

堆栈:Python 2.7。Django 1.5,Django Rest框架

问题是我有一个关系,其中有一个具有多个股票行情的想法。tickers表具有该构想的外键(teaser_id),因此我们具有以下内容

**Tickers**
id teaser_id 
1  1
2  1
3  1
4  2
4  2 

**Ideas**
id
1
2

django从数据库中生成了模型,但是没有FK约束,它无法正确生成所有关系。所以这里是如何配置模型的:

class Tickers(models.Model):
    id = models.IntegerField(primary_key=True)

    # I changed to this
    teaser_id = models.ForeignKey(Idea)
    # From        
    # teaser_id = models.IntegerField(null=True, blank=True)

    ticker = models.CharField(max_length=135L, blank=True)
    date_added = models.CharField(max_length=135L, blank=True)
    class Meta:
        db_table = 'teaser_tickers'


class Idea(models.Model):
    id = models.IntegerField(primary_key=True)
    industry_id = models.IntegerField()
    post_type = models.CharField(max_length=45L)

    class Meta:
        db_table = 'idea'

这是我的序列化器

class TickerSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = myModels.Tickers
        fields = (
            'id'
            ,'teaser_id'
            ,'ticker'
        )

class IdeaSerializer(serializers.HyperlinkedModelSerializer):
    user = UserSerializer(many=False, read_only=True)
    ticker = TickerSerializer(many=True, read_only=True, )
    teaser = myFields.TeaserField(teaser_length=200, original_field='content')

    class Meta:
        model = myModels.Idea
        fields = (
            'id'
            , 'title'
            , 'date_added'
            , 'user'
            , 'teaser'
            , 'ticker'
        )

我希望“想法资源”将代码作为子节点集返回。

REST请求适用于想法,其中代码是一个子元素。因此,我收到一个例外,即未在思想中定义股票行情。很好-我只是在猜测如何设置它-我在研究文档和源代码-但希望有人可以帮助我。

谢谢

爱德华多·马尔多纳多

正如akaphenom所说,您必须在序列化程序中使用related_name,但是由于您未在模型中指定任何名称,因此必须使用默认值,在这种情况下,将使用teaser_set,并且您IdeaSerializer必须为:

class IdeaSerializer(serializers.HyperlinkedModelSerializer):
    user = UserSerializer(many=False, read_only=True)
    tickers = ReverseTickerSerializer(many=True, read_only=True)
    teaser_set = myFields.TeaserField(teaser_length=200, original_field='content')


class Meta:
    model = myModels.Idea
    fields = (
        'id',
        'title',
        'date_added',
        'user',
        'teaser_set',
        'tickers',
    )

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django Rest Framework-OneToOne反向关系

来自分类Dev

如何限制Django Rest Framework反向关系中的记录数

来自分类Dev

如何使用Django Rest框架访问反向关系

来自分类Dev

Django-REST-FrameWork 中的多个反向关系

来自分类Dev

django rest-framework 序列化器反向关系

来自分类Dev

在Serializer Django:Rest Framework中获取外键关系的数据

来自分类Dev

Django Rest框架关系

来自分类Dev

Django Rest Framework反向URL

来自分类Dev

Django ManyToManyField反向关系

来自分类Dev

在反向关系上添加序列化器-Django Rest Framework

来自分类Dev

将反向关系与Django-rest-framework的序列化器一起使用

来自分类Dev

Django Rest框架反向关系字段数据从validated_data中省略

来自分类Dev

Django Rest Framework:管理关系

来自分类Dev

Restangular,Django REST和关系

来自分类Dev

Django Rest Framework嵌套关系

来自分类Dev

Django rest_framework关系

来自分类Dev

反向查询关系的Django queryset

来自分类Dev

Django模型的虚假反向关系

来自分类Dev

Django:注释过滤的反向关系

来自分类Dev

多对多反向关系Django

来自分类Dev

Django Rest Framework反向和SimpleRouter

来自分类Dev

Django rest framework - Field level validation in serializer

来自分类Dev

Django REST serializer.is_valid()返回False

来自分类Dev

Django REST Serializer对多个嵌套关系进行N + 1数据库调用,共3个级别

来自分类Dev

Django REST框架和ManyToMany关系的AttributeError

来自分类Dev

Django Rest Framework,使嵌套关系超链接

来自分类Dev

Django Rest Framework实现多对多关系

来自分类Dev

Django Rest嵌套关系不起作用

来自分类Dev

Django Rest Framework中的关系条件检查

Related 相关文章

热门标签

归档