Django 1.11一对多关系没有相关集

问题描述 投票:0回答:1

所以我有两个型号:

class UserData(models.Model):
    """ Holds basic user data. """
    id = models.IntegerField(primary_key=True, editable=False)  # id is taken from data.


class ConsumptionTimePoint(models.Model):
    """ Individual consumption time points with a One-to-Many relationship with UserData """
    user_data = models.ForeignKey(UserData, on_delete=models.CASCADE)

当我尝试通过创建它们来测试它们时,以及它们在测试中的关系:

def test_basic_model_creation(self):
    user_data_object = UserData.objects.create(id=1)
    user_data_object.save()
    consumption_time_point_object = ConsumptionTimePoint.objects.create(user_data=user_data_object)                                                                        
    consumption_time_point_object.save()
    self.assertIsNotNone(consumption_time_point_object.user_data)
    self.assertEquals(1, len(user_data_object.consumption_time_point_set.all()))

我收到以下错误:

AttributeError: 'UserData' object has no attribute 'consumption_time_point_set'

但从我的理解,这是获得该集合的正确方法。我有什么名字吗?或者这是一个测试问题?

python django unit-testing
1个回答
2
投票

要获取相关的查询集,类名称是小写的,并且附加了_set。试试consumptiontimepoint_set

您还可以使用related_name参数手动设置反向关系名称。

© www.soinside.com 2019 - 2024. All rights reserved.