Advertisement
horozov86

Replace field image_url in new model

Mar 27th, 2024
383
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.67 KB | None | 0 0
  1. 1. Създавам нов модел Image в който дефинираме image_url. Мога да добавя и допълнителна логика за снимката, като created-at, modified_at, size и др. В модела Place добавяме image, което е свързано с модела Image чрез ForeignKey. Изтриваме image-url от Place.
  2.  
  3. from django.db import models
  4. from django.contrib.auth import get_user_model
  5.  
  6. UserModel = get_user_model()
  7.  
  8. class Image(models.Model):
  9.     image_url = models.URLField(
  10.         unique=True,
  11.         default="https://...",
  12.         error_messages={
  13.             'unique': "This image URL is already in use! Provide a new one."
  14.         }
  15.     )
  16.     # Можете да добавите още полета според нуждите си, като например поле за описание на изображението или за категорията му.
  17.  
  18. class Place(models.Model):
  19.     RATING_CHOICES = [
  20.         (1, '1 Star'),
  21.         (2, '2 Stars'),
  22.         (3, '3 Stars'),
  23.         (4, '4 Stars'),
  24.         (5, '5 Stars'),
  25.     ]
  26.  
  27.     CATEGORY_CHOICES = [
  28.         ('Mountain', 'Mountain'),
  29.         ('Sea', 'Sea'),
  30.         ('Historical Site', 'Historical Site'),
  31.         ('City', 'City'),
  32.         ('Spa', 'Spa'),
  33.         ('Wine Tourism', 'Wine Tourism')
  34.  
  35.     ]
  36.     name = models.CharField(
  37.         max_length=200,
  38.         null=False,
  39.         blank=False,
  40.     )
  41.     description = models.TextField(
  42.         null=False,
  43.         blank=False,
  44.     )
  45.     location = models.CharField(
  46.         max_length=200,
  47.         null=False,
  48.         blank=False,
  49.     )
  50.     rating = models.IntegerField(
  51.         choices=RATING_CHOICES,
  52.         null=True,
  53.         blank=True,
  54.     )
  55.  
  56.     category = models.CharField(max_length=100, choices=CATEGORY_CHOICES, null=True, blank=True)
  57.  
  58.     user = models.ForeignKey(UserModel, on_delete=models.RESTRICT)
  59.     image = models.ForeignKey(Image, on_delete=models.CASCADE, null=True, blank=True)
  60.  
  61. 2. Променяме формата, като заменяме полето image-url с image.
  62.  
  63. from django import forms
  64. from my_holiday.destination.models import Place
  65.  
  66. class PlaceBaseForm(forms.ModelForm):
  67.     class Meta:
  68.         model = Place
  69.         fields = ['name', 'description', 'location', 'rating', 'image', 'category',]
  70.  
  71. class PlaceCreateForm(PlaceBaseForm):
  72.     pass
  73.  
  74. class PlaceDetailsForm(PlaceBaseForm):
  75.     pass
  76.  
  77. class PlaceEditForm(PlaceBaseForm):
  78.     pass
  79.  
  80. НЕ СЪМ СИГУРЕН ДАЛИ ЩЕ РАБОТИ ЗАТОВА ЩЕ ТЕСТВАМ В КОПИЕ НА ПРОЕКТА ВЪРЗАН КЪМ НОВА БАЗА.
  81.  
  82.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement