【问题标题】:How to use UUID field in kwargs?如何在 kwargs 中使用 UUID 字段?
【发布时间】:2018-04-17 03:24:17
【问题描述】:

我是 Django 新手,我正在做单元测试。这是我的模型:

class RandomModel(models.Model):
    title = models.CharField(max_length=64, null=False, blank=False)
    parent_user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
    parent_course = models.ForeignKey(Course, on_delete=models.CASCADE, default=1)
    unique_id = models.UUIDField(
                                default=uuid.uuid4,
                                editable= False,
                                unique=True)

这是我的 urls.py

path('myPath/retrieve/<uuid:unique_id>', views.RetrieveABCAPIView.as_view(), name = myPath_retrieve)

我正在 test.py 中尝试以下操作

class APIStatusCodeTests(APITestCase):

    def setUp(self):
        """
        Sets up testing environment. Add all endpoints to be tested
        """
        tbl = RandomModel.objects.create(title = 'rofl')
        tbl.save()

    self.retrieve_method_endpointsdeck = [
        reverse('flashcards:flashcards_api:myPath_retrieve', kwargs = {'unique_id': RandomModel.objects.unique_id('unique_id')})

我应该对反向功能进行哪些更改?我不知道如何在 kwargs 中获取 UUID?

谢谢!

【问题讨论】:

    标签: python django django-models django-rest-framework django-testing


    【解决方案1】:

    您在测试设置方法中创建了一个RandomModel 对象,因此您需要在reverse 中使用该对象的UUID - 如下所示:

    reverse(
        'flashcards:flashcards_api:myPath_retrieve', 
        kwargs={'unique_id': RandomModel.objects.first().unique_id}
    )
    

    请注意,这将获取在数据库中找到的第一个 RandomModel 对象 - 您可能希望更具体地了解要使用的对象 - 或者在此测试本身中创建一个对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-20
      • 2022-01-07
      • 2019-11-11
      • 2023-04-05
      • 2018-08-15
      • 2018-06-08
      • 2016-01-14
      相关资源
      最近更新 更多