Джанго переключает логическое поле - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь переключить логическое поле, я знаю, что в обычной ситуации это просто.

Но мне нужно переключить логическое поле с помощью Foreignkey.

У меня две модели.

Модель 1: Цель и модель 2: Присоединены (от внешнего ключа к цели), я пытаюсь создать это, потому что канал активности (get stream.io) показывает только одно действие - когда пользователь добавляет цель.Но мне нужна также активность, когда пользователь присоединяется к цели.Вот почему я создаю объединенную модель для второго действия.

Модель 2 имеет только 4 поля: присоединенный (логический), пользователь (чужой для пользователя), созданный_кат и цель (внешний ключ к модели цели)

Как создать вид и путь для работы.Я пытаюсь это:

@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('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/ Идентификатор хорош, нокогда я нажимаю на ссылку: Нет Joined соответствует данному запросу.

Мой вопрос, как подключить эту модель и создать работу booleanfield.

...