Django切换布尔字段

时间:2019-02-09 23:30:46

标签: django django-models django-templates django-views

我尝试切换布尔字段,我知道在正常情况下这很简单。

但是我需要用外键切换布尔字段。

我有两个模型。

模型1:目标和模型2:已加入(目标的外键),我尝试创建它是因为活动供稿(获取stream.io)仅显示一个活动-当用户添加目标时。但是当用户加入目标时,我也需要活动。这就是为什么我为第二个活动创建联接模型的原因。

模型2仅具有4个字段:joind(布尔值),user(用户对外部),created_at和Goal(目标模型为外部键)

如何创建视图和工作路径。 我试试这个:

@login_required
def toggle_done(request, joined_id: int) -> HttpResponse:

    joined = get_object_or_404(Joined, pk=joined_id)

    toggle_task_completed(joined.id)
    messages.success(request, "Dołączyłeś do celu '{}'".format(joined.goal.title))

    return redirect(
        reverse('goallist')
)

def toggle_task_completed(joined_id: int) -> bool:
    try:
        joined = Joined.goal.get(id=joined_id)
        joined.joined = not joined.joined
        joined.save()
        return True
    except Joined.DoesNotExist:
        # FIXME proper log message
        print("Nie znaleziono celu")
    return False

#Path:

path('toggle_done/<int:joined_id>/', views.toggle_done, name='joined'),

和模板:

        {% if goal.joined %}
        <a href="{% url 'joined' goal.id %}" class="btn btn-success-gradiant">Już dołączyłeś</a>
        {% else %}
        <a href="{% url 'joined' goal.id %}" class="btn btn-danger-gradiant">Dołącz do celu</a>
        {% endif %}

链接:http://django.local:8000/goals/toggle_done/1/ ID很好,但是当我单击链接时:No Joined匹配给定查询。

我的问题是,如何连接此模型并创建工作布尔值字段。

0 个答案:

没有答案