CCCPaste

Replace field image_url in new model

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

НЕ СЪМ СИГУРЕН ДАЛИ ЩЕ РАБОТИ ЗАТОВА ЩЕ ТЕСТВАМ В КОПИЕ НА ПРОЕКТА ВЪРЗАН КЪМ НОВА БАЗА.