Мне было интересно, можно ли автоматически установить значение другого charfield на основе предыдущего выбора? Я работаю над простым приложением mov ie, и мне нужно изменить цвет значка в html, основываясь на типе mov ie. Я хотел бы автоматизировать это вместо того, чтобы устанавливать коллекторы вручную. Я немного новичок в django. На основе значения «kind» мне нужно установить значение «color».
Мой код:
AGE_CATEGORY = {
("0","All"),
("6","Kids"),
("16","Teenagers"),
("21","Adults")
}
MOVIE_CATEGORY = {
("H","Horror"),
("F","Fantasty"),
("ScI","Science-Fiction"),
("C","Comedy"),
("R","Romance"),
("T","Thriller"),
("D","Drama"),
}
MOVIE_CATEGORY_COLORS = {
("H","danger"),
("F","primary"),
("ScI","secondary"),
("C","warning"),
("R","success"),
("T","dark"),
("D","info"),
}
class Movies(models.Model):
title = models.CharField(max_length=100)
age = models.CharField(choices=AGE_CATEGORY, max_length=2)
kind = models.CharField(choices=MOVIE_CATEGORY, max_length=3)
color = models.CharField(choices=MOVIE_CATEGORY_COLORS, max_length=1)
price = models.FloatField()
date = models.DateField()
max_seats = models.IntegerField()
description = models.TextField()
def __str__(self):
return self.title
Нашел другое решение :) Просто создал новую функцию в представлениях и сжал 2 списка вместе - модели и цвета. Затем просто повторил их в html и, кажется, работает как положено. Разместив его ниже, возможно, кто-то найдет его полезным.
def show_all_movies(request):
MOVIE_CATEGORY_COLORS = {
("H","danger"),
("F","primary"),
("ScI","secondary"),
("C","warning"),
("R","success"),
("T","dark"),
("D","info"),
}
color_final = []
for movie in Movies.objects.all():
for color in MOVIE_CATEGORY_COLORS:
if movie.kind in color:
color_final.append(color[1])
context = {
"Movies_Colors": zip(Movies.objects.all(), color_final)
}
return render(request, "main_templates/movies.html", context)