from django.db import models from django.core.validators import FileExtensionValidator from django.contrib.auth.models import User # Create your models here. class UploadImage(models.Model): image = models.ImageField( upload_to="plankton/%Y/%m/%d/", validators=[FileExtensionValidator(allowed_extensions=["jpg", "png"])], ) predicted_image_url = models.CharField(max_length=500) class PredictedImage(models.Model): original_image = models.OneToOneField(UploadImage, on_delete=models.CASCADE) image = models.ImageField(upload_to=f"plankton/%Y/%m/%d/") prediction_data = models.JSONField() @property def get_original_image(self): return self.original_image.image def get_prediction_data(self): results = self.prediction_data["predictions"] for pred in results: pred["confidence"] = round(pred["confidence"] * 100, 2) return results class PredictionBatch(models.Model): images = models.ManyToManyField(PredictedImage) date_predicted = models.DateTimeField(auto_now_add=True) owner = models.ForeignKey(User, on_delete=models.CASCADE)