как заполнить историю change_reason в django простой истории? - PullRequest
0 голосов
/ 06 марта 2020
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'

Какое возможное решение для заполнения или переопределения поля причины и типа изменения ???

...