Я показываю случайное изображение из базы данных. После того, как изображение отображено, его счет должен быть установлен в 1, как только оно отобразится, чтобы оно больше не использовалось. Я попытался написать функцию просмотра, которая пытается изменить количество, когда изображение выбрано для отображения. Никакой формы обновления или нажатия кнопки не требуется.
views.py
from django.shortcuts import render
from django.conf import settings
from .models import Image
import random
# Create your views here.
def index(request):
y= random.randint(0,10)
p = Image.objects.all()[y]
if (p.p_image_count==0):
p_img = Image.objects.all()[y]
Image.objects.all()[y].p_image_count += 1
# Image.save(self)
lst = [p.s_image1, p.s_image2, p.s_image3, p.s_image3, p.s_image4, p.s_image5]
x = random.randint(0,4)
tmp =[]
for i in range(0,3):
p = Image.objects.all()[random.randint(0,14)]
tmps=[p.s_image1, p.s_image2, p.s_image3, p.s_image3, p.s_image4, p.s_image5]
tmp.append(tmps[random.randint(0,4)])
s_img = [lst[x]]+ tmp
random.shuffle(s_img)
return render(request,'index.html',{"p_img":p_img, "s_img": s_img, 'media_url':settings.MEDIA_URL})```
models.py - модель изображения
class Image(models.Model):
p_image = models.ImageField(max_length=255,upload_to='p_image',default='NULL', blank='NULL')
p_image_count = models.IntegerField(default=0)
s_image1 = models.ImageField(max_length=255,upload_to='s_image')
s_image1_flag = models.BooleanField(default=False)
s_image2 = models.ImageField(max_length=255,upload_to='s_image',default='NULL', blank='NULL')
s_image2_flag = models.BooleanField(default=False)
s_image3 = models.ImageField(max_length=255,upload_to='s_image',default='NULL', blank='NULL')
s_image3_flag = models.BooleanField(default=False)
s_image4 = models.ImageField(max_length=255,upload_to='s_image',default='NULL', blank='NULL')
s_image4_flag = models.BooleanField(default=False)
s_image5 = models.ImageField(max_length=255,upload_to='s_image',default='NULL', blank='NULL')
s_image5_flag = models.BooleanField(default=False)
#if image displayed currently , set flag to true