Я пытаюсь получить API для моего приложения ответов. Когда сообщение создается, пользователь всегда имеет значение NULL. Я не уверен, почему это так.
Как автоматически добавить в сохраняемый объект некоторые поля, такие как аутентифицированный пользователь, IP-адрес пользователя?
Вот мой сериализатор:
User = get_user_model()
class UserPublicSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = [
'username',
'first_name',
'last_name',
'is_staff',
'photo_url'
]
class AnswerCreateUpdateSerializer(ModelSerializer):
user = UserPublicSerializer(read_only=True)
class Meta:
model = Answer
fields = [
'object_pk',
'content_type',
'answer',
'user'
]
read_only_fields = ['user']
И представление API создает:
class AnswerCreateAPIView(CreateAPIView):
queryset = Answer.objects.all()
serializer_class = AnswerCreateUpdateSerializer
И модель:
class AnswerAbstractModel(BaseAnswerAbstractModel):
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('user'),
blank=True, null=True, related_name="%(class)s_answers",
on_delete=models.SET_NULL)
answer = FroalaField()
submit_date = models.DateTimeField(_('date/time submitted'), default=None, db_index=True)
ip_address = models.GenericIPAddressField(_('IP address'), unpack_ipv4=True, blank=True, null=True)
class Answer(AnswerAbstractModel):
class Meta(AnswerAbstractModel.Meta):
db_table = "answers"
Прошу прощения за мое невежество в мире django. Хотя я изо всех сил пытаюсь понять это.
Тем не менее, какой подход должен быть здесь?