Skip to main content
 首页 » 编程设计

python之如何在 kwargs 中使用 UUID 字段

2025年01月19日31emanlee

我是 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?

谢谢!

请您参考如下方法:

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

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

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