diff --git a/back/object/models.py b/back/object/models.py index f4444d5..37f31b3 100644 --- a/back/object/models.py +++ b/back/object/models.py @@ -18,14 +18,10 @@ class Element3D(models.Model): name = models.CharField(max_length=255) description = models.TextField() min_distance = models.IntegerField( - validators=[MinValueValidator(1), MaxValueValidator(200)], - blank=True, - null=True + validators=[MinValueValidator(1), MaxValueValidator(200)], blank=True, null=True ) max_distance = models.IntegerField( - validators=[MinValueValidator(2), MaxValueValidator(200)], - blank=True, - null=True + validators=[MinValueValidator(2), MaxValueValidator(200)], blank=True, null=True ) def __str__(self): @@ -37,7 +33,15 @@ class ClickableArea(models.Model): description = models.TextField() object_name = models.CharField(max_length=255) target = models.ForeignKey( - Element3D, on_delete=models.CASCADE, related_name="clickable_areas" + Element3D, + on_delete=models.PROTECT, + related_name="clickable_areas", + blank=True, + null=True, + ) + source = models.ForeignKey( + Element3D, + on_delete=models.PROTECT, ) def __str__(self): diff --git a/back/object/views.py b/back/object/views.py index f647f1c..504b507 100644 --- a/back/object/views.py +++ b/back/object/views.py @@ -12,7 +12,10 @@ class NumberInFilter(django_filters.BaseInFilter, django_filters.NumberFilter): class ClickableAreaViewSet(viewsets.ModelViewSet): queryset = ClickableArea.objects.all() serializer_class = ClickableAreaSerializer - filterset_fields = ("target",) + filterset_fields = ( + "target", + "object_name", + ) class Element3DFilter(django_filters.rest_framework.FilterSet): diff --git a/front/src/components/Promo/load_models.vue b/front/src/components/Promo/load_models.vue index ca06dfe..d0e6f49 100644 --- a/front/src/components/Promo/load_models.vue +++ b/front/src/components/Promo/load_models.vue @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/front/src/components/Promo/modelItem.vue b/front/src/components/Promo/modelItem.vue index 02d2ef3..a053fa5 100644 --- a/front/src/components/Promo/modelItem.vue +++ b/front/src/components/Promo/modelItem.vue @@ -6,9 +6,9 @@ const props = defineProps(['modelUrl', 'modelFile', 'onClick']) let scene: any if (props.modelUrl) { let { scene: loaded_scene } = await useGLTF(props.modelUrl) - scene = loaded_scene + scene = loaded_scene.clone() } else if (props.modelFile) { - scene = props.modelFile + scene = props.modelFile.clone() } function shadows_and_pos(scene: any) { scene.children.forEach((el: any) => { @@ -21,7 +21,7 @@ function shadows_and_pos(scene: any) { shadows_and_pos(scene) \ No newline at end of file