1. Създавам нов модел Image в който дефинираме image_url. Мога да добавя и допълнителна логика за снимката, като created-at, modified_at, size и др. В модела Place добавяме image, което е свързано с модела Image чрез ForeignKey. Изтриваме image-url от Place.
from django.db import models
from django.contrib.auth import get_user_model
UserModel = get_user_model()
class Image(models.Model):
image_url = models.URLField(
unique=True,
default="https://...",
error_messages={
'unique': "This image URL is already in use! Provide a new one."
}
)
# Можете да добавите още полета според нуждите си, като например поле за описание на изображението или за категорията му.
class Place(models.Model):
RATING_CHOICES = [
(1, '1 Star'),
(2, '2 Stars'),
(3, '3 Stars'),
(4, '4 Stars'),
(5, '5 Stars'),
]
CATEGORY_CHOICES = [
('Mountain', 'Mountain'),
('Sea', 'Sea'),
('Historical Site', 'Historical Site'),
('City', 'City'),
('Spa', 'Spa'),
('Wine Tourism', 'Wine Tourism')
]
name = models.CharField(
max_length=200,
null=False,
blank=False,
)
description = models.TextField(
null=False,
blank=False,
)
location = models.CharField(
max_length=200,
null=False,
blank=False,
)
rating = models.IntegerField(
choices=RATING_CHOICES,
null=True,
blank=True,
)
category = models.CharField(max_length=100, choices=CATEGORY_CHOICES, null=True, blank=True)
user = models.ForeignKey(UserModel, on_delete=models.RESTRICT)
image = models.ForeignKey(Image, on_delete=models.CASCADE, null=True, blank=True)
2. Променяме формата, като заменяме полето image-url с image.
from django import forms
from my_holiday.destination.models import Place
class PlaceBaseForm(forms.ModelForm):
class Meta:
model = Place
fields = ['name', 'description', 'location', 'rating', 'image', 'category',]
class PlaceCreateForm(PlaceBaseForm):
pass
class PlaceDetailsForm(PlaceBaseForm):
pass
class PlaceEditForm(PlaceBaseForm):
pass
НЕ СЪМ СИГУРЕН ДАЛИ ЩЕ РАБОТИ ЗАТОВА ЩЕ ТЕСТВАМ В КОПИЕ НА ПРОЕКТА ВЪРЗАН КЪМ НОВА БАЗА.