class ModelA(models.Model):
name = models.CharField("Name", max_length=128)
history = HistoricalRecords(
history_change_reason_field=models.TextField(null=True))
Я сделал сериализатор:
class ModelAHistorySerializer(serializers.Serializer):
name = serializers.CharField()
history_change_reason = serializers.CharField()
history_date = serializers.DateTimeField()
history_user = serializers.CharField()
history_type = serializers.CharField()
просмотров:
@action(methods=["GET"], detail=True)
def history(self, request, *args, **kwargs):
a = self.get_object()
result = ModelA(a.history.all(), many=True).data
return Response(data=result)
это работает в точке, так как предоставляет мне имя, историю_пользователя и дату истории, но в NULL значение change_reason и тип. Результат:
[
{
"name": "john",
"history_change_reason": null,
"history_date": "2020-03-06T06:48:36.065985Z",
"history_user": "admin",
"history_type": "~"
},
когда я передаю changeReason для метода сохранения как:
def save(self, *args, **kwargs):
self.changeReason = "hello"
, это работает. поэтому я попытался сделать дополнительное поле для ввода как:
class ModelA(models.Model):
name = models.CharField("Name", max_length=128)
change_reason = models.TextField()
history = HistoricalRecords(
history_change_reason_field=models.TextField(null=True))
и использовать его во время метода сохранения.
def save(self, *args, **kwargs):
self.changeReason = self.change_reason
теперь я получаю ошибку
Объект ModelBase получил несколько значений для аргумента ключевого слова 'history_change_reason'
Какое возможное решение для заполнения или переопределения поля причины и типа изменения ???