django-创建后不存在外键的DRF无效pk对象
发布时间:2022-06-11 05:53:34 266
相关标签: # springboot
我有两个相互关联的课程。有一个类我将主键设置为char字段,这样我就可以很容易地引用它或创建它以匹配实际对象的id(所有对象都将有这个唯一的名称)。
from django.db import models
class Ven(models.Model):
id = models.CharField(max_length=80, primary_key=True)
statusOn = models.BooleanField(default=True)
class Device(models.Model):
device_id = models.CharField(max_length=80)
ven_id = models.ForeignKey(VEN, related_name='devices', on_delete=models.SET_NULL, null=True)
class DeviceSerializer(serializers.ModelSerializer):
class Meta:
model = Device
fields = ['id', 'device_id', 'ven_id']
class VENSerializer(serializers.ModelSerializer):
class Meta:
model = VEN
fields = ['id', 'statusOn', 'devices']
class DeviceList(generics.ListCreateAPIView):
logger.info("DeviceList: view")
# permission_classes = [permissions.IsAuthenticated]
queryset = Device.objects.all()
serializer_class = DeviceSerializer
但是,当我尝试运行测试时:
类DevicesTestCase(TestCase):def setUp(self):self。工厂=客户端()
def test_create_device(self):
device = {
"ven_id": "TEST_VEN_1",
"device_id": "TEST_DEVICE_1",
"statusOn": True,
}
response = self.factory.post('/devices/', data=device)
self.assertEqual(response.status_code, 201)
我的回复返回400并声明:
b'{"ven_id":["Invalid pk \\"TEST_VEN_1\\" - object does not exist."]}'
我想写一个自定义create
在我的序列化程序中,如果ven不存在但未被调用,则创建ven。正在其他位置验证数据。我的视图集中的断点perform_create
也不会开火。
我不想为一些应该简单明了的东西编写一堆变通代码。我知道我在什么地方弄丢了什么东西。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报