У меня есть модель, которая хранит текст.
У меня есть другая связанная модель, которая должна хранить объекты в первой модели.
Например, предположим, что я публикую текст типа «Франция в Европе», который будет использоваться в модели News , а затем после публикации этой строки модель Entity должна хранить две строки. Френс и Европа . Как я могу добиться этого после публикации строки?
Вот мои модели и сериализуются:
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',
)
Полагаю, мне нужно добавить код в execute_create () , но я не совсем уверен, как.
вот мои взгляды.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'
Возможно ли это вообще? если нет, то какой метод предлагается?
Спасибо,