Alex_shady
@Alex_shady

Как правильно сделать выборку по определенному полю в бд?

Доброго дня, я новичок в django и столкнулся с такой тривиальной проблемой, я пытаюсь реализовать функционал голосования по ip адресам, т.е. что-бы с одного ip можно было проголосовать 1 раз в одной номинации. Но у меня не выходит правильно построить выборку.
View:
def post(self, request, pk, pk2):
        client_ip, is_routable = get_client_ip(request)
        nomination = NominationsModel.objects.get(id=pk2)
        member = MemberModel.objects.get(id=pk)
        chek = CheckModel.objects.order_by('ip')
        print(chek)
        if client_ip not in chek:
            ip_save = CheckModel.objects.create(ip=client_ip, nominations=nomination)
            member.check += 1
            ip_save.save()
            member.save()
            return redirect('/competition/nominations/{}'.format(nomination.id))

Model:
class NominationsModel(models.Model):
    """Номинации"""
    name = models.CharField('Название номинации', max_length=500)

    def get_absolute_url(self):
        return reverse('detailnominations', kwargs={'pk': self.id})

    def __str__(self):
        return self.name

    def get_all(self):
        return MemberModel.objects.filter(parent=self)

    class Meta:
        verbose_name = 'Номинацию'
        verbose_name_plural = 'Номинаиции'


class CheckModel(models.Model):
    ip = models.CharField('ip', max_length=100, blank=True, null=True)
    nominations = models.ForeignKey(NominationsModel, on_delete=models.CASCADE, blank=True, null=True)

На данный момент голосовать можно сколь угодно раз.
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
@MAGistr_MTM
Учусь программировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы