>

재무 관리자를 만들고 계정 활동을 변경해야하는 사용자 (활동 계정 표시 여부)를 변경하지만 양식을 보낼 때 모델 속성은 변경되지 않고 항상 TRUE로 유지됩니다

계정 사본을 통해이 작업을 시도했지만 결과의 결과도 아닙니다 Account.objects.get (user = self.request.user, id = id) .is_active = 거짓

models.py

class Account(models.Model):
    type_of_currency = models.CharField(max_length=20)
    user = models.ForeignKey(get_user_model(), blank=True,
                             related_name='user_account',
                             on_delete=models.CASCADE)
    count = models.DecimalField(max_digits=12, decimal_places=2, blank=True)
    created = models.DateTimeField(default=datetime.datetime.now)
    is_active = models.BooleanField()
    def __str__(self):
        return f'{self.type_of_currency} - {self.count}'

views.py

class AccountDetailView(DetailView, UpdateView):
    model = Account
    form_class = AccountCreateForm
    template_name = 'account_detail.html'
    def post(self, request, *args, **kwargs):
        id = self.request.POST['accountid']  
        self.request.user.user_account.get(id=6).is_active = False
        print(self.request.user.user_account.get(
            id=id).is_active)  # always True why?
        return redirect('/counts/' + id)

서식 파일

{% extends 'base.html' %}
{% block content %}
    <div class="col-sm-5">
        <h1>account: {{ account.id }}</h1>
        <p><strong>Author:</strong> {{ account.user }}</p> <!-- author detail link not yet defined -->
        <p><strong>Type:</strong> {{ account.type_of_currency }}</p>
        <p><strong>count:</strong> {{ account.count }}</p>
        <p><strong>IsCreated:</strong> {{ account.created }}</p>
        <p><strong>IsActive:</strong>{{ account.is_active }}</p>
        <a class="btn btn-outline-primary"
           href="{% url 'account-list' %}">Back</a>
        {% if account.is_active %}
            <form method="post">
                {% csrf_token %}
                <input type="hidden" value="{{ account.id }}" name="accountid">
                <button type="submit" class="btn btn-outline-danger">Deactivate</button>
            </form>
        {% else %}
            <form method="post">
                {% csrf_token %}
                <button type="submit" class="btn btn-outline-success">Activate</button>
            </form>
        {% endif %}
    </div>
{% endblock %}

PostView DetailViews에서 버튼을 누르면 사용자 활동이 변경되지만 결과는 항상 True라고 예상합니다.


  • 답변 # 1

    DB에 대한 변경 사항을 커밋하지 않습니다.

    또한 다음 구문을 사용하지 않습니다. self.request.user.user_account.get(id=6).is_active = False

    시도 할 수 있습니다 : self.request.user.user_acocount.filter(id=6).update(is_active=False)

    그러나 .get() 사용에 대해죽은 세트 :

    user_acc = self.request.user.user_account.get(id=6)
    user_acc.is_active = False
    user_acc.save()
    
    

관련 자료

  • 이전 javascript - React의 키를 기반으로 상태 업데이트
  • 다음 javascript - typeerror - push가 정의되지 않았습니다