Как удалить запись из базы данных, используя форму ввода в django - PullRequest
0 голосов
/ 31 марта 2020

Итак, у меня есть небольшая веб-программа, в которой пользователь может ввести свою электронную почту и получать некоторые обновления. Тем не менее, это электронное письмо сохраняется в базе данных (sqlite3), и у меня есть форма, в которой пользователь может отписаться, моя проблема в том, что я пытаюсь найти способ получить информацию из формы для отказа от подписки, и если она соответствует какой-либо записи в База данных это удаляет его. У кого-нибудь есть предложения?

Это представление, которое я пытаюсь создать, но оно не работает

def unsubscribe_view(request):

    form = EmailForm()

    if request.method == "POST":
        form = EmailForm(request.POST)
        value = form.cleaned_data['email']
        if form.is_valid():
            Email.objects.filter(email = value).delete()

    context = {
        'form' : form,
    }

    return render(request, 'Version/unsubscribe.html', context)

Это страница html

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">

    <!-- Compiled and minified JavaScript -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>

<div style="text-align : center;">
<h1> UnSubscribe Page </h1>
<div class="container">
    <div class="row">
<form method="post" action="/">
    {% csrf_token %}
    {{form}}
    <button type="submit" class="waves-effect waves-light btn-small">Unsubscribe</button>
</form>
</div>
</div>
</div>

Это модель, если она вам нужна

from django.db import models

# Create your models here.

class Email(models.Model):
    email = models.EmailField()

    def __str__(self):
        return self.email

Это форма

from django import forms
from django.forms import ModelForm
from .models import Email

class EmailForm(forms.ModelForm):
    class Meta:
        model = Email
        fields = ['email']

1 Ответ

0 голосов
/ 31 марта 2020

Я бы предложил сделать запись недействительной вместо удаления. Но если вы уверены в возможности удаления, то приведенный ниже фрагмент может выполнить работу

emailInstance = Email.objects.get(email='<email value>')
emailInstance.delete()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...