¿Alguien puede decir dónde me equivoqué?
Tengo 2 modelos: Proyecto y Propósito.
class Purpose(models.Model): code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False) project = models.ForeignKey(Project, on_delete=models.CASCADE) text = models.TextField(_('Text')) comments = models.ManyToManyField("Comment") Cada proyecto tiene un solo propósito. Entonces, en la página project_detail , quiero mostrar el botón purpose_add solo si ese proyecto no tiene ningún otro objeto de propósito. ¿Por qué no veo el botón cuando no hay un objeto Purpose con el mismo project_code ?
vistas.py:
def project_detail(request, project_code): *** purpose_is_not_exist = Purpose.objects.exclude(project=project_code).exists() ***proyecto_detalle.html:
{% if purpose_is_not_exist %} <button id="purpose-add-button"></button> {% endif %}{% if not purpose_is_not_exist %}Debes negar el falso bool.
La confusión es causada por el nombre de la variable purpose_is_not_exist .
Purpose.objects.exclude(project=project_code).exists() La declaración anterior devuelve si el objeto Purpose existe. Deberá cambiar el nombre de la variable a purpose_exists para evitar confusiones.
Y, en la plantilla, cuando desee agregar el botón si no existe, entonces niegue la variable:
{% if not purpose_exists %}Alternativamente, si desea seguir usando el nombre original de la variable, simplemente anule en la vista.
purpose_is_not_exist = not Purpose.objects.exclude(project=project_code).exists()