Как найти значение поля с помощью foreignkey в Django
У меня есть следующие модели:
class Camera(models.Model):
url = models.CharField(max_length=300, unique=True)
camera_number = models.IntegerField(null=False, blank=False,
validators=[
MaxValueValidator(1000),
MinValueValidator(1)])
camera_name = models.CharField(max_length=100, null=False, blank=False)
slug = models.SlugField(max_length=100, null=True, blank=False, unique=True)
class BaseImage(models.Model):
url = models.ForeignKey(Camera, on_delete=models.CASCADE)
base_image_filename = "base_images/" + str(Camera.slug) + "/%H"
image = models.ImageField(max_length=300, upload_to=base_image_filename)
Я пытаюсь создать имя файла в BaseImage, которое содержит данные в переменной slug соответствующей записи Camera. Камера может иметь много BaseImage, но каждый BaseImage может соответствовать только одной камере.
В имени я получаю что-то вроде "base_images/<django.db.models.query_utils.DeferredAttribute object at 0x7f6006bd9b70>/20/camera_1.jpg".
Что мне нужно изменить, чтобы получить значение поля slug как часть имени файла ?
Вы можете указать метод и передать ссылку на этот метод:
from django.utils.timezone import now
class BaseImage(models.Model):
def get_image_filename(self, filename):
h = now().strftime('%H')
return f'base_images/{self.url.slug}/{h}/{filename}'
url = models.ForeignKey(Camera, on_delete=models.CASCADE)
image = models.ImageField(max_length=300, upload_to=get_image_filename)