我有一个存储文本的模型。 我有另一个相关模型,该模型应该将实体存储在第一个模型中。 例如,假设我要发布“法国在欧洲”之类的文本,该文本将以 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'
有可能吗?如果不是,提供的方法是什么? 谢谢,