Моя модель определяется следующим образом:
class Example(models.Model):
ex_id = models.CharField(max_length=30, primary_key=True)
name = models.CharField()
sess_id = models.CharField(max_length=20, default=0)
creation_date = models.DateTimeField(auto_now=False, auto_now_add=True)
def __str__(self):
return str(self.name)
Я пытаюсь динамически назначать id
s с использованием приведенного ниже сериализатора. Значения должны быть сгенерированы на основе метки времени, взятой из модели:
class ExampleSerializer(serializers.ModelSerializer):
ex_id = serializers.SerializerMethodField()
name = serializers.CharField(min_length=6)
sess_id = serializers.SerializerMethodField()
def get_ex_id(self, obj):
return '{:x}'.format(int(obj.creation_date.strftime("%Y%m%d%H%M%S%f")))
def get_sess_id(self, obj):
return 'sess_' + str(obj.creation_date.strftime("%d%H%M%S%f"))
class Meta:
model = Example
fields = '__all__'
Все заканчивается вставкой одной записи в базу данных; в случае следующих попыток UNIQUE constraints failed
выдается ошибка. В представлении браузера одна добавленная запись отображает id
s, как определено в сериализаторе, но когда я просматриваю базу данных, для них появляются пустые / нулевые значения (0 в случае sess_id
, поскольку это значение по умолчанию; пустое значение для ex_id
).
Как / где настроить приложение для вставки форматированных значений в качестве значений полей?