ValueError:无法分配“ <Truckdb:Truckdb对象(1)>”:“ Quiz.truck_name”必须是“ truck_name”实例

时间:2020-03-12 05:57:54

标签: python django django-queryset

我正在尝试在我的应用中创建一个实例,如下所示:

Views.py

new_quiz = Quiz.objects.create(owner=request.user, comments="Autogenerated", truck_type=truck_type_object,
                                       truck_name=chosen_truck_object)

chosen_truck_object的位置是

    chosen_truck_object = Truckdb.objects.filter(display_name=chosentruck)[0]

和Models.py

class Quiz(models.Model):


    owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='quizzes')
    comments = models.TextField(max_length=256, blank=True)
    truck_type = models.ForeignKey(truck_type, on_delete=models.CASCADE, related_name='trucks')
    truck_name = models.ForeignKey(truck_name, on_delete=models.SET_NULL, null=True)


class truck_type(models.Model):
    name = models.CharField(max_length=30)
    color = models.CharField(max_length=7, default='#007bff')

    def __str__ (self):
        return self.name



class truck_name(models.Model):
    truck_type = models.ForeignKey(truck_type, on_delete=models.CASCADE)
    name = models.CharField(max_length=30)

    def __str__ (self):
        return self.name

如何将truck_typetruck_name实例传递给Quiz中的Quiz.objects.create模型?

2 个答案:

答案 0 :(得分:0)

首先,您需要遵循命名约定准则,因此模型的名称必须为驼峰doc,如下所示:

d x 1 x 1

然后请迁移数据库,然后为您的问题使用class TruckType(models.Model): name = models.CharField(max_length=30) color = models.CharField(max_length=7, default='#007bff') def __str__ (self): return self.name class TruckName(models.Model): truck_type = models.ForeignKey(TruckType, on_delete=models.CASCADE) name = models.CharField(max_length=30) def __str__ (self): return self.name 对象而不是TruckName

答案 1 :(得分:0)

chosen_truck_object = TruckName.objects.filter(display_name=chosentruck)[0]

它会保存

,而不是使用filter的获取方法chosen_truck_object = TruckName.objects.get(display_name=chosentruck)