用一个职位要求填写两张桌子

时间:2019-05-24 03:59:03

标签: django django-rest-framework

我有一个存储文本的模型。 我有另一个相关模型,该模型应该将实体存储在第一个模型中。 例如,假设我要发布“法国在欧洲”之类的文本,该文本将以 News 模型发布,然后在发布此字符串后,应存储 Entity 模型两行 Frence Europe 。字符串发布后如何实现? 这是我的模型并进行序列化:

class News(models.Model):
    description = models.TextField(verbose_name="Description", max_length=50, blank=True, null=True, default="")
    timestamp = models.DateTimeField(auto_now_add=True)



class Entity(models.Model):
    news = models.ForeignKey(
        News,
        related_name='entities4thisnews',
        on_delete=models.CASCADE)
        entity = models.TextField(verbose_name="Entity", max_length=100, blank=True, null=True, default="")
        timestamp = models.DateTimeField(auto_now_add=True)


class EntitySerializer(serializers.HyperlinkedModelSerializer):
    news = serializers.SlugRelatedField(queryset=News.objects.all(),
                                        slug_field='pk', )
    class Meta:
        model = Entity
        fields = ('url',
                  "id",
                  'news',
                  'entity',
                  'timestamp',
                  )


class NewsSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = News
        entities4thisnews = EntitySerializer(many=True, required=False)
        fields = (
            "url",
            "id",
            "description",
            'timestamp',
            'entities4thisnews',
        )

我的猜测是我应该在 perform_create()中添加一些代码,但不确定如何。

这是我的views.py:

class NewsList(generics.ListCreateAPIView):
    queryset = News.objects.all()
    serializer_class = NewsSerializer
    name = 'news-list'
    def perform_create(self, serializer):
        pass

class EntityList(generics.ListCreateAPIView):
    queryset = Entity.objects.all()
    serializer_class = EntitySerializer
    name = 'entity-list'

有可能吗?如果不是,提供的方法是什么? 谢谢,

0 个答案:

没有答案