返回

django-创建后不存在外键的DRF无效pk对象

发布时间:2022-06-11 05:53:34 275
# 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也不会开火。

我不想为一些应该简单明了的东西编写一堆变通代码。我知道我在什么地方弄丢了什么东西。

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像