Django (DRF) 序列化程序和 MariDB 版本控制表
Django (DRF) Serializers and MariDB Versioning Tables
MariaDB 具有 table 版本控制这一很酷的功能,允许您像 VCS 一样跟踪 table 中的数据更改。
根据 Django 文档,最新的 Django 版本支持 MariaDB,但似乎并非如此,因为要查询历史数据,您仍然必须使用 raw-sql 命令。
现在我的项目中嵌套了序列化器,“嵌套”底部的一些模型包含版本化对象。在请求使用嵌套序列化程序的父序列化程序的端点视图时,如何指定要获取的版本(系统时间)?
示例:
# MODELS
class Driver(models.Model):
name = models.CharField(max_length=120)
surname = models.CharField(max_length=120)
car = models.ForeignKey(Car, on_delete=models.SET_NULL, null=True)
class Car(models.Model):
brand = models.CharField(max_length=120)
model = models.CharField(max_length=120)
year = models.DateTimeField()
# SERIALIZERS
class CarSerializer(serializers.ModelSerializer):
class Meta:
model = Car
fields = '__all__'
class DriverSerializer(serializers.ModelSerializer):
car = CarSerializer()
class Meta:
model = Driver
fields = '__all__'
假设 django 模型:Car
使用 MariaDB (ALTER TABLE db.Car ADD SYSTEM VERSIONING;
) 进行系统版本控制,我如何告诉 Driver
序列化程序获取特定版本的 Car
数据?
谢谢大家的评论,我可能已经解决了这个问题的答案:
MariaDB 具有 table 版本控制这一很酷的功能,允许您像 VCS 一样跟踪 table 中的数据更改。
根据 Django 文档,最新的 Django 版本支持 MariaDB,但似乎并非如此,因为要查询历史数据,您仍然必须使用 raw-sql 命令。
现在我的项目中嵌套了序列化器,“嵌套”底部的一些模型包含版本化对象。在请求使用嵌套序列化程序的父序列化程序的端点视图时,如何指定要获取的版本(系统时间)?
示例:
# MODELS
class Driver(models.Model):
name = models.CharField(max_length=120)
surname = models.CharField(max_length=120)
car = models.ForeignKey(Car, on_delete=models.SET_NULL, null=True)
class Car(models.Model):
brand = models.CharField(max_length=120)
model = models.CharField(max_length=120)
year = models.DateTimeField()
# SERIALIZERS
class CarSerializer(serializers.ModelSerializer):
class Meta:
model = Car
fields = '__all__'
class DriverSerializer(serializers.ModelSerializer):
car = CarSerializer()
class Meta:
model = Driver
fields = '__all__'
假设 django 模型:Car
使用 MariaDB (ALTER TABLE db.Car ADD SYSTEM VERSIONING;
) 进行系统版本控制,我如何告诉 Driver
序列化程序获取特定版本的 Car
数据?
谢谢大家的评论,我可能已经解决了这个问题的答案: