Я только начал использовать django, и я не так хорошо с ним знаком. Это моя проблема, я просто хочу поставить галочку и изменить значение логического поля в модели, которое по умолчанию = false, на true
Я пытаюсь создать функцию из views.py, но если есть какой-либо способ сделать это непосредственно из статического файла, где установлен мой флажок, это тоже сработает для меня.
Это мои взгляды.py
def check(request):
check = AddToCart.objects.get(orderd = request.GET['orderd'])
check.is_active = True
check.save()
это флажок
Check: <input type = "checkbox" name = "checked" value = "checked">
Это моя модель на models.py:
class AddToCart(models.Model):
id = models.AutoField(primary_key=True, unique=True)
id_product = models.ForeignKey(Produkte, on_delete = models.DO_NOTHING)
quantity = models.IntegerField()
id_user = models.ForeignKey(User, on_delete = models.DO_NOTHING)
orderd = models.BooleanField(default=False)
@property
def cmimi_total(self):
return self.quantity * self.id_product.cmimi
У меня есть несколько объектов внутри AddToCart, и я хочу изменить логические значения каждого из них на True, когда флажок установлен. Я знаю, что моя проблема просто основная, но как новичок мне может понадобиться помощь. Спасибо !
Там только один флажок или несколько?
ваша HTML-страница должна отправить идентификатор объекта, чтобы пометить его как orderd
(либо при отправке формы, либо с помощью ajax). Таким образом, ваше представление должно получить объект на основе этого идентификатора, а затем установить orderd
на True
. Я не знаю, почему вы выбираете на основе orderd
(чтобы получить все упорядоченные объекты), и я не знаю, почему вы устанавливаете is_active
, поскольку в вашей модели нет этого поля.
Также почему ваш HTML является «статическим файлом»? Как он может содержать продукты в корзине, если он статичен?
@SammyJ в файле HTML есть только один флажок, и когда я отмечаю его, я хочу отметить логическое поле каждого объекта внутри AddToCart.
Хорошо, а что такое orderd
в check = AddToCart.objects.get(orderd = request.GET['orderd'])
? Это флажок, к которому вы пытаетесь получить доступ?
@SammyJ поле из модели AddToCart, я думаю?
Ой, извините, надо было поконкретнее, я имею в виду это request.GET['orderd']
что orderd
здесь?
@dirkgroten я вижу руководства на YouTube, в которых говорится, что мне нужно установить пакет django-multiselectfield ... Я запутался!
@SammyJ получает поле «упорядоченное» из модели. Я использовал тот же способ, чтобы получить объект, ссылающийся на него по идентификатору 'prod_delete = AddToCart.objects.get(id = request.GET['id'])' а затем 'prod_delete.delete()', чтобы удалить объект, и подумал о том, чтобы сделать что-то подобное с логическим значением, после того, как я получил его таким образом, я хотел изменить значение с ложного на истинное, это то, что я пытался сделать
@PàrísŹarka, тебе нужно потратить еще немного времени на изучение основ. Как делать запросы в Django и как отправлять формы. И вы смотрели неправильные уроки на YouTube. Большинство простых вещей можно сделать в django без сторонних пакетов, и вы должны сначала хорошо понять, как работает django, прежде чем использовать сторонние пакеты. Они просто запутают вас.
@dirkgroten я полностью понимаю, я только начал изучать django примерно 2 недели назад и python примерно месяц назад
@dirkgroten спасибо, чувак, я очень ценю твою помощь и спасибо за руководство, это только мое начало в джанго, и я чувствую, что погрузился в информацию, поэтому я также не понимаю, задавая вопросы, связанные с джанго.
@PàrísŹarka, конечно, каждый должен с чего-то начинать. Ваш вопрос слишком неясен, чтобы ответить. Модель AddToCart
тоже странная, из-за чего сложно понять, чего именно вы пытаетесь достичь. Что представляет объект AddToCart
? Обычно у вас есть модели Cart
и Product
(обратите внимание на существительное) и методы или представления add_to_cart
(обратите внимание на глагол) для добавления товаров в корзину. Но что такое «addtocart»?
@dirkgroten все записи в моей модели AddToCart отображаются как «объект AddToCart (число)» в администрировании Django.
Это стандартный способ представления объекта модели в Django. Если вы переопределите метод __str__()
, вы можете решить, что вы хотите отображать, когда ваши объекты «распечатываются».
Я снял флажок и просто использовал кнопку, чтобы преобразовать логические значения в модели в Истинный. это мои взгляды.py
def check_out(request):
if request.method == 'GET':
checked = AddToCart.objects.filter(id_user = request.user, orderd = False)
for a in checked:
a.orderd = True
a.save()
return HttpResponseRedirect('/browse/')
и кнопку в html файл
<a type = "button" href = "/check/" class = "btn btn-ge style-4 btn-warning btn-sm" id = "buy_button">Buy Now</a>
Вы можете использовать пост jQuery ajax для этого