django - Django REST 框架 - 在序列化程序中添加深度会使 POST 数据上的外键约束失败
问题描述
我有这样的模型:
class KioskShelfMapping(models.Model):
mapped_shelf_basket_name_reference = models.ForeignKey(ShelfBasketMapping, on_delete=models.CASCADE, default=1)
mapped_shelf_name = models.CharField(max_length=15, null=False, blank=False, default="default")
mapped_kiosk_name = models.CharField(max_length=15, blank=False, null=False, default="default")
shelf_position = models.PositiveSmallIntegerField(null=False, blank=False, default=0)
下面是我的序列化器:
class KioskShelfMappingSerializer(serializers.ModelSerializer):
class Meta:
model = KioskShelfMapping
fields = ['id', 'mapped_shelf_basket_name_reference', 'mapped_shelf_name', 'mapped_kiosk_name', 'shelf_position']
depth = 2
我面临的问题是,每当我向模型添加 POSTING 一些数据的深度时,都会给我
FOREIGN KEY 约束失败
但是当我删除深度场时,我能够成功地将数据发布到模型。我尝试搜索相同的问题并找到了这个并相应地修改了我的序列化程序:
class KioskShelfMappingSerializer(serializers.ModelSerializer):
class Meta:
model = KioskShelfMapping
fields = ['id', 'mapped_shelf_basket_name_reference', 'mapped_shelf_name', 'mapped_kiosk_name', 'shelf_position']
depth = 2
def __init__(self, *args, **kwargs):
super(KioskShelfMappingSerializer, self).__init__(*args, **kwargs)
request = self.context.get('request')
if request and request.method =='POST':
print('Method is POST')
self.Meta.depth = 0
print(self.Meta.depth)
else:
self.Meta.depth = 2
这似乎不起作用。我仍然得到同样的错误。我哪里错了?感谢您提前提供帮助。
解决方案
推荐阅读
- reactjs - 类型错误:books.map 不是函数
- java - 用于使用 android 多部分数据上传多个图像的 Web API
- azure - Azure 流分析作业 - 如何在边缘远程部署/发送参考数据文件
- active-directory - Mule 3 LDAP 连接器多个 Base DN
- ios - iOS:是否可以分配空闲磁盘空间仅用于在 iOS 应用程序中阅读
- activerecord - Yii2 在创建时使用 ActiveRecord 模型中的主键
- sublimetext3 - 在 SublimeText 3 中自动将 - -(双破折号)转换为 ->
- android - 如何使用 android room 自动插入链接的实体?
- java - ANDROID:如何将数据插入 JSON 文件并将其保存到本地存储?
- reactjs - 错误:捆绑失败:错误:找不到相对于目录“C:\\Users\\...”的预设“module:metro-react-native-babel-preset”